如何判断匹配特定字符集或 EOL的所有内容?
[=]+.*?[()|$]
匹配:==test)
不匹配:==test
为什么第二个语句没有考虑行正则表达式结束$
的结束?
答案 0 :(得分:5)
行结束在字符类中不起作用,因为它实际上不是字符。它是一个零宽度断言(它测试字符串中当前点的条件,但实际上不会占用一个字符)。
使用(?:otherstuffhere|$)
进行测试。
注意:您似乎将字符类与匹配的子组混淆。字符类[...]
匹配括号内的任何一个字符。 [a|bc]
将匹配a
,|
,b
或c
。匹配子组是您想要的OR多个表达式。 (...)
是一个匹配的子组,具有捕获功能。 (?:...)
是一个匹配的子组,没有捕获。
请注意,基于您的设置,$
的匹配行为可能会在多行字符串中有所不同。它可以匹配每一行的结尾,也可以只匹配字符串的结尾。
\z
始终始终匹配字符串的末尾。 \Z
将匹配字符串末尾或最后一行换行符。