我想找到所有奇数连续的反斜杠。
我尝试了以下表达式:
(?<!\\)(\\)(?!\\)
但是,它匹配单个反斜杠(如果存在)。
答案 0 :(得分:2)
你也可以试试这个:
(?<!\\)(?:\\{2})*\\(?!\\)
(?<!\\)
当前位置背面没有反斜杠(?:\\{2})
匹配每个连续的反斜杠对,零
或更多场合\\
匹配单个反斜杠(?!\\)
然后检查是否没有立即反斜杠答案 1 :(得分:1)
您可以使用
r'(?<!\\)\\(?:\\{2})*(?!\\)'
请参阅regex demo。
<强>详情:
(?<!\\)
- 在当前位置之前不会出现反斜杠\\
- 单个反斜杠(?:\\{2})*
- 0次或更多次出现2个反斜杠(?!\\)
- 没有\
可以立即显示在当前位置的右侧。请注意,在Python中,在正则表达式模式中使用文字反斜杠时最好使用原始字符串文字(减少转义次数并使模式看起来更整洁,并避免任何与错误解释的反斜杠相关的问题。)< / p>
答案 2 :(得分:0)
如果你正在寻找速度,那么最好的基准:
\\(?<!\\\\)(?:\\\\)*(?!\\)
Regex1: \\(?<!\\\\)(?:\\\\)*(?!\\)
Options: < none >
Completed iterations: 50 / 50 ( x 1000 )
Matches found per iteration: 3
Elapsed Time: 0.23 s, 229.23 ms, 229231 µs
Regex2: (?<!\\)\\(?:\\{2})*(?!\\)
Options: < none >
Completed iterations: 50 / 50 ( x 1000 )
Matches found per iteration: 3
Elapsed Time: 0.83 s, 829.68 ms, 829684 µs
Regex3: (?<!\\)(?:\\{2})*\\(?!\\)
Options: < none >
Completed iterations: 50 / 50 ( x 1000 )
Matches found per iteration: 3
Elapsed Time: 1.09 s, 1086.34 ms, 1086340 µs