逃避转义的正则表达式模式Python的方法

时间:2019-05-21 14:39:41

标签: python regex python-3.x

我正尝试取消转义的正则表达式模式,以将其应用于字符串。 它实际上是动态的,我并不完全知道它是什么样子,但是在我的整个测试过程中,我遇到了一个问题,带有转义正则表达式模式的字符串如下所示:

\\d{4}

我写了一个简单的正则表达式,它替换了反斜杠和字符with just a character

的每个组合

我正以这种方式应用它:

sub(r"\\(.)", "\\1", escaped_pattern)

但是后来给我的是d{4},而不是我所期望的\d{4}

我已经尝试过使用原始字符串进行repl,对它进行转义\转义,它仍然没有返回我期望返回的值。不胜感激。

编辑

escaped_pattern = settings.reg_exp
regexp = sub(r"\\(.)", "\\1", escaped_pattern)
search(regexp, string_to_regexp).group()[0]

2 个答案:

答案 0 :(得分:1)

根据您的更新,我非常确定,如果您只是停止尝试对其进行转义,那么您将获得所需的输出。

import re
s1 = "1234astring"
matches = re.search("\\d{4}", s1) 
matches.group(0)
"1234"
matches.group()[0]
"1"

答案 1 :(得分:0)

在搜索模式中尝试r"\\\\(.)"在替代模式中尝试'\\\1'。 在这里工作正常:https://regex101.com/r/M3ikqj/1