用于查找未转义字符的Python正则表达式

用于查找未转义字符的Python正则表达式,python,regex,Python,Regex,我需要找到一个正则表达式字符串,如果没有转义,它将(在Python中)只匹配一个字符(比如:)。如果有偶数个反斜杠相互逃逸,我也需要它来捕获反斜杠,因为我使用它来查找和替换 有一大堆问题似乎是重复的,但事实并非如此。这是因为它们要么捕获反斜杠,要么在Pythonre中不起作用 我尝试过的一些不起作用的正则表达式是(?(捕获反斜杠),(?),还有一些在Python中不起作用的正则表达式。您希望查找并替换未转义的冒号 使用 result=re.sub(r'(?newstr',text) 请参阅和

我需要找到一个正则表达式字符串,如果没有转义,它将(在Python中)只匹配一个字符(比如
)。如果有偶数个反斜杠相互逃逸,我也需要它来捕获反斜杠,因为我使用它来查找和替换

有一大堆问题似乎是重复的,但事实并非如此。这是因为它们要么捕获反斜杠,要么在Python
re
中不起作用


我尝试过的一些不起作用的正则表达式是
(?(捕获反斜杠),
(?),还有一些在Python中不起作用的正则表达式。

您希望查找并替换未转义的冒号

使用

result=re.sub(r'(?newstr',text)
请参阅和

详细信息

  • (?-不允许在当前位置之前使用反斜杠
  • ((?:\\{2})*)
    -捕获组1:0或更多双反斜杠序列
  • -冒号(替换为需要替换的任何字符/模式)
在替换中,
\g
(这是
\1
的一个明确版本)backreference将使用第1组模式的反斜杠放回原位。
\g
更通用,因为您可以用数字/数字替换冒号,而不会出现问题

result = re.sub(r'(?<!\\)((?:\\{2})*):', r'\g<1>newstr', text)