2011-11-21 175 views
0

鑑於此輸入之間的區別:是什麼,這些正則表達式

ESAS NO  :2005-238 

這2正則表達式不匹配:

esas\s+(no)?\s*:([^\w]+) 
esas\s+(no)?\s*:([\W]+) 

但是這一次匹配:

esas\s+(no)?\s*:([^a-zA-Z]+) 

我以爲所有以上的會/應該表現平等,但他們不是。那些有什麼區別?

回答

5

\w匹配任何字母數字字符,包括數字,即它與[A-Za-z0-9_]大致相同。

+1

+1,但取決於正則表達式引擎,它可能比這更匹配。例如,在.NET中,'\ w'匹配所有Unicode字母,數字和「連接標點符號」。 –

+0

@TimPietzcker,這就是爲什麼我說「大致相同」。 – Kusalananda

1

看那描述爲\w

\w A word character is a character from a-z, A-Z, 0-9, including the _ (underscore) character. 
\W The negated version of \w 

,通過使用\W或​​您明確排除[a-zA-Z0-9_]手段。請注意,0-9已從匹配​​集中排除,但在您的字符串中有需要匹配的數字。

+0

您引用的內容不是IMO的有用說明。你自己的話會更好地解釋差異。 – BoltClock

+0

的確,固定它。 – halfdan