正则表达式不匹配转义括号
Regular Expression Not Matching Escaped Parenthesis
我有一个非常简单的正则表达式,它不会像我期望的那样匹配转义括号(实例:https://regex101.com/r/RRupbC/1/)。
正则表达式:
/\b(?:Test1 \(VI|Test2 \(VI\))\b/gi
示例输入:
Test1 (VI <- Match
Test2 (VI) <- No Match
我希望正则表达式在第二个输入上匹配,因为它满足 Test2 (VI) 的第二个条件。它似乎不承认右括号是有效匹配。
为什么这个逻辑不正确,如何修改表达式才能成功匹配我的第二个输入示例?
第二个字符串不匹配,因为最后 \b
。特别是,您正在执行的有效正则表达式是
\bTest2 \(VI\)\b
,匹配
- 单词边界
- 字符串
Test2 (VI)
- 另一个词边界
一个"word boundary"是单词字符和非单词字符之间的空space,反之亦然(字符串的beginning/end算作非单词字符这个目的)。
因为)
是一个非单词字符,需要在目标字符串中跟一个单词字符才能使)\b
匹配(例如Test2 (VI)x
应该匹配成功) .
一个最小的解决方案可能是将 \b
拉入第一个分支:
\b(?:Test1 \(VI\b|Test2 \(VI\))
我有一个非常简单的正则表达式,它不会像我期望的那样匹配转义括号(实例:https://regex101.com/r/RRupbC/1/)。
正则表达式:
/\b(?:Test1 \(VI|Test2 \(VI\))\b/gi
示例输入:
Test1 (VI <- Match
Test2 (VI) <- No Match
我希望正则表达式在第二个输入上匹配,因为它满足 Test2 (VI) 的第二个条件。它似乎不承认右括号是有效匹配。
为什么这个逻辑不正确,如何修改表达式才能成功匹配我的第二个输入示例?
第二个字符串不匹配,因为最后 \b
。特别是,您正在执行的有效正则表达式是
\bTest2 \(VI\)\b
,匹配
- 单词边界
- 字符串
Test2 (VI)
- 另一个词边界
一个"word boundary"是单词字符和非单词字符之间的空space,反之亦然(字符串的beginning/end算作非单词字符这个目的)。
因为)
是一个非单词字符,需要在目标字符串中跟一个单词字符才能使)\b
匹配(例如Test2 (VI)x
应该匹配成功) .
一个最小的解决方案可能是将 \b
拉入第一个分支:
\b(?:Test1 \(VI\b|Test2 \(VI\))