我有以下正则表达式:
$regex = '/(?:(?:\b(?:pp|[Ww]ars|[\.!?)]?\s*f|vs)[\.!?)]\s))\Z/mu';
符合:
$string = 'Wars! ';
但我希望它符合以下情况:
$string = 'Wars!) ';
我在那里添加了右括号,但显然我做错了。
答案 0 :(得分:1)
您可以将*
量词添加到上一个[.!?)]
以匹配零或更多出现次数:
(?:(?:\b(?:pp|[Ww]ars|[.!?)]?\s*f|vs)[.!?)]*\s))\Z
^
另请注意,字符类中的.
不必转义为与文字点符号匹配。