如何匹配行尾?

时间:2013-04-29 09:56:07

标签: java regex

如何判断匹配特定字符集 EOL的所有内容?

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

匹配:==test)

不匹配:==test

为什么第二个语句没有考虑行正则表达式结束$的结束?

1 个答案:

答案 0 :(得分:5)

行结束在字符类中不起作用,因为它实际上不是字符。它是一个零宽度断言(它测试字符串中当前点的条件,但实际上不会占用一个字符)。

使用(?:otherstuffhere|$)进行测试。

注意:您似乎将字符类与匹配的子组混淆。字符类[...]匹配括号内的任何一个字符。 [a|bc]将匹配a|bc。匹配子组是您想要的OR多个表达式。 (...)是一个匹配的子组,具有捕获功能。 (?:...)是一个匹配的子组,没有捕获。

请注意,基于您的设置,$的匹配行为可能会在多行字符串中有所不同。它可以匹配每一行的结尾,也可以只匹配字符串的结尾。

无论您使用何种设置,

\z 始终始终匹配字符串的末尾。 \Z将匹配字符串末尾或最后一行换行符。