2013-06-25 56 views
1

我需要understnad這個表達式做什麼,但閱讀有關正則表達式的groovy.codehaus文檔似乎不幫我這個正則表達式有什麼作用?常規

matches: "[\\p{L}\\p{N}\\s-.()_&]+" 

http://groovy.codehaus.org/Regular+Expressions

任何暗示,在此先感謝

+3

檢查[此](http://php.net/manual/en/regexp.reference.unicode.php),這導致進入'Unicode版本\\ p {L}'會匹配一個字母,'\\ p {N}'會匹配一個數字,'\\ s'會匹配一個空格等等。我有點擔心'\\ S-.'因爲我affraid它將匹配一個範圍,不能確定,但​​... – HamZa

+1

@HamZa'\\ S-.'將匹配空格,連字符或點(因爲它在角色類中) –

+0

@tim_yates呵呵,我確認了。當我說「範圍」我的意思是2個字符的範圍內,所以讓我們來看看[此正則表達式(http://regex101.com/r/cX0xN8)'[\ S - ]'看來確實是它匹配一個空格,連字符或圓點。但是,如果我們使用'[ - ]'它會匹配[更多方式字符(http://regex101.com/r/rI1rQ5)根據[ASCII表(http://www.asciitable.com/ )。結論:如果我們使用'\ s',那麼就沒有範圍。 – HamZa

回答

5

首先,所有的反斜線轉義,所以[\\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-.()&]+

+3

+1這意味着:_at至少有一件事,他們都必須在一組字母,數字,空格字符和字符' - 。()_&'_ –

+0

嘿謝謝你分裂這個,這讓我明白了,並改進了我想要的方式:D乾杯 –

相關問題