unescape转义regex模式Python的方法

2024-04-20 03:04:13 发布

您现在位置:Python中文网/ 问答频道 /正文

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

\\d{4}

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

我是这样应用的:

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

但它后来给我的是d{4}而不是我所期望的\d{4}。你知道吗

我试过用原始字符串来表示repl,escape\unescape,它仍然没有返回我期望的结果。如果有任何帮助,我将不胜感激。你知道吗

编辑

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

Tags: 字符串过程with模式动态repl字符pattern
2条回答

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

基于您的更新,我很肯定,如果您停止尝试取消显示,您将得到您想要的输出。你知道吗

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

相关问题 更多 >