拥有这样的正则表达式模式:
ab*d
,为什么它会返回匹配真值以适用于输入abbbde
?如何更改以检查最后一个字符?让我们分析一下你的正则表达式:
a - 匹配 "a"
b* - 匹配任意数量的 "b"
d - 匹配 "d"
因为 * 可以匹配任意数量的 "b"。
$ 匹配行尾,所以
ab*d$
应该匹配行尾(以确保后面没有其他内容)
不过\s将匹配任何空格,所以另一个选项是
ab*d\s
为确保模式的最后一个字符是$
,您需要在模式末尾添加$
。
$
在正则表达式中被称为字符串结尾锚点(End of String Anchor)
。您可以在这里阅读更多关于锚点的内容:http://www.regular-expressions.info/anchors.html