我需要understnad這個表達式做什麼,但閱讀有關正則表達式的groovy.codehaus文檔似乎不幫我這個正則表達式有什麼作用?常規
matches: "[\\p{L}\\p{N}\\s-.()_&]+"
http://groovy.codehaus.org/Regular+Expressions
任何暗示,在此先感謝
我需要understnad這個表達式做什麼,但閱讀有關正則表達式的groovy.codehaus文檔似乎不幫我這個正則表達式有什麼作用?常規
matches: "[\\p{L}\\p{N}\\s-.()_&]+"
http://groovy.codehaus.org/Regular+Expressions
任何暗示,在此先感謝
首先,所有的反斜線轉義,所以[\\p{L}\\p{N}\\s-.()_&]+
是應該被理解成
[\p{L}\p{N}\s-.()_&]+
。
[ ]
是一個字符類,它匹配兩個支架之間的任何東西,使用以下語法:
\p{L}
匹配的Unicode屬性L,信
\p{N}
Unicode的屬性N項匹配,數
\s
是任何空格字符
-.()_&?
字符類內部沒有特殊含義,所以可以直接讀取它們
所以[\p{L}\p{N}\s-.()_&]
匹配上述四個選項中的任何一個字符。
的+
末是指「一個或多個」。
基本上,它是的[a-zA-Z0-9\s-.()_&]+
或更短[\w\s-.()&]+
+1這意味着:_at至少有一件事,他們都必須在一組字母,數字,空格字符和字符' - 。()_&'_ –
嘿謝謝你分裂這個,這讓我明白了,並改進了我想要的方式:D乾杯 –
檢查[此](http://php.net/manual/en/regexp.reference.unicode.php),這導致進入'Unicode版本\\ p {L}'會匹配一個字母,'\\ p {N}'會匹配一個數字,'\\ s'會匹配一個空格等等。我有點擔心'\\ S-.'因爲我affraid它將匹配一個範圍,不能確定,但... – HamZa
@HamZa'\\ S-.'將匹配空格,連字符或點(因爲它在角色類中) –
@tim_yates呵呵,我確認了。當我說「範圍」我的意思是2個字符的範圍內,所以讓我們來看看[此正則表達式(http://regex101.com/r/cX0xN8)'[\ S - ]'看來確實是它匹配一個空格,連字符或圓點。但是,如果我們使用'[ - ]'它會匹配[更多方式字符(http://regex101.com/r/rI1rQ5)根據[ASCII表(http://www.asciitable.com/ )。結論:如果我們使用'\ s',那麼就沒有範圍。 – HamZa