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