我如何知道将所有内容与特定字符集或EOL 匹配?
[=]+.*?[()|$]
火柴:==test)
不匹配:==test
$
为什么第二条语句不考虑行尾正则表达式锚?
行尾在字符类中不起作用,因为它实际上不是字符。这是一个零宽度断言(它测试字符串中当前点的条件,但实际上并没有吃掉一个字符)。
用 测试它(?:otherstuffhere|$)
。
注意:您似乎将字符类与匹配的子组混淆了。字符类[...]
匹配括号内的任何一个字符。[a|bc]
将匹配a
,|
或. 匹配子组是您想要或多个表达式的内容。是与捕获匹配的子组。是没有捕获的匹配子组。b
c
(...)
(?:...)
请注意,$
根据您的设置,多行字符串中的匹配行为可能会有所不同。它可以匹配每一行的结尾,也可以只匹配字符串的结尾。
\z
无论您使用什么设置,都将始终只匹配字符串的末尾。\Z
将在字符串的末尾匹配,或者在最后的换行符之前匹配。