2013-04-29 66 views
4

如何判斷匹配所有特定字符集, EOL?如何匹配行尾?

[=]+.*?[()|$]

比賽:==test)

不匹配:==test

爲什麼行正則表達式錨$結束沒有考慮到對第二語句?

+0

如果使用'Pattern.MULTILINE',那麼'(?:[()] | $)'將匹配一個括號或行尾。 – MikeM 2013-04-29 10:33:05

回答

5

行尾在字符類中不起作用,因爲它實際上不是字符。它是一個零寬度斷言(它在字符串中的當前點測試一個條件,但實際上並沒有吞掉一個字符)。

(?:otherstuffhere|$)進行測試。

注意:您似乎混淆了字符類與匹配的子組。字符類別[...]與括號內的任何一個字符匹配。 [a|bc]將匹配a,|,bc。匹配子組是你想要的或多個表達式。 (...)是一個捕獲的匹配子組。 (?:...)是未捕獲的匹配子羣。

注意的$匹配模式可以根據您設置的多行字符串會有所不同。它可以匹配每行的結尾,也可以只匹配字符串的結尾。

\z總是只匹配字符串的末尾,不管你使用什麼設置。 \Z將在字符串的末尾匹配,或者在最後的換行符之前匹配。

+0

太棒了,所以我的exp會評估爲:'(?:[()] | \ z)' – membersound 2013-04-29 10:00:52