正则表达式 - 匹配未转义的字符

bco*_*lan 11 python regex

我正在尝试使用正则表达式来匹配字符串中未转义的逗号字符.

我正在寻找的规则是"逗号前面没有偶数个反斜杠".

测试用例:

True    abc,abc
False   abc\,abc
True    abc\\,abc
False   abc\\\,abc
True    abc\\\\,abc
False   abc\\\\\,abc
Run Code Online (Sandbox Code Playgroud)

我试图使用负面的后视:(?<!(\\+)),但Python给了我error: look-behind requires fixed-width pattern.

MRA*_*RAB 21

试试这个正则表达式: (?<!\\)(?:\\\\)*,

说明:

(?<!\\)    Matches if the preceding character is not a backslash
(?:\\\\)*  Matches any number of occurrences of two backslashes
,          Matches a comma
Run Code Online (Sandbox Code Playgroud)

  • 用括号将命令括起来:`(?&lt;!\\)(?:\\\\)*(,)`。现在逗号将位于捕获组中。 (3认同)
  • 但有一个小问题是匹配组包含所有前面的反斜杠.有什么解决方法吗? (2认同)