我需要一个正则表达式,它与字符串中任何地方的零/偶数反斜杠匹配完整字符串。如果字符串包含奇数个反斜杠,则不应该匹配完整的字符串。
的例子:
→匹配
→不匹配
测试 测试→匹配
测试 测试→不匹配
测试 →不匹配
测试 测试 →匹配
等等…注意:在上面的例子
中,我们可以假设任何长度的字符串代替'test'。我使用这个^[^\]*(\\)*[^\]*$
正则表达式,但在第二次测试后它不匹配反斜杠。例如:
test\test(不匹配此之后的任何内容)
谢谢你的帮助。
你可以使用这个正则表达式:
^(?:(?:[^\]*\){2})*[^\]*$
RegEx演示
正则表达式分解:
^
: Start(?:
:启动非捕获组#1(?:
:启动非捕获组#2[^\]*
:匹配0个或多个字符,\
: Match a
){2}
:结束非捕获组#2。重复2次。
)*
:结束非捕获组#1。重复此组0次或更多次。[^\]*
:匹配0个或多个字符( 除外)$
: End
当前正则表达式^[^\]*(\\)*[^\]*$
可以解释为Any(\)*Any
,其中Any
表示除反斜杠以外的任何字符。
期望的语言应该是Any\Any\Any\...
,它可以通过在Kleene闭包操作符中包含当前正则表达式获得。这是(Any(\)*Any)*
修改后的原正则表达式:
^([^\]*(\\)*[^\]*)*$
可以进一步优化为:
^((\\)*[^\]*)*$