我有以下正则表达式:
$regex = '/(?:(?:'b(?:pp|[Ww]ars|['.!?)]?'s*f|vs)['.!?)]'s))'Z/mu';
它匹配:
$string = 'Wars! ';
但我希望它与以下场景相匹配:
$string = 'Wars!) ';
我在那里加了最后一个括号,但显然我做错了什么。
您可以将*
量词添加到最后一个[.!?)]
,以匹配零次或多次出现:
(?:(?:'b(?:pp|[Ww]ars|[.!?)]?'s*f|vs)[.!?)]*'s))'Z
^
查看regex演示
还要注意,字符类中的.
不必进行转义以匹配文字点符号。