gpt4 book ai didi

python - 在 python 中创建正则表达式时忽略特殊字符

转载 作者:行者123 更新时间:2023-12-01 03:57:13 25 4
gpt4 key购买 nike

在Python中创建正则表达式时,有没有办法忽略特殊字符的含义?换句话说,“按原样”获取字符串。

我正在编写内部使用 expect 的代码方法来自Telnet对象,仅接受正则表达式。因此,答案不可能是显而易见的“使用==代替正则表达式”。

我试过了

import re

SPECIAL_CHARACTERS = "\\.^$*+?{}[]|():" # backslash must be placed first
def str_to_re(s):
result = s
for c in SPECIAL_CHARACTERS:
result = result.replace(c,'\\'+c)
return re.compile(result)

TEST = "Bob (laughing). Do you know 1/2 equals 2/4 [reference]?"
re_bad = re.compile(TEST)
re_good = str_to_re(TEST)

print re_bad.match(TEST)
print re_good.match(TEST)

它可以工作,因为第一个无法识别该字符串,而第二个可以识别。我查看了 python 文档中的选项,但无法找到更简单的方法。或者是否存在我的解决方案未涵盖的情况(我使用 python 文档来构建 SPECIAL_CHARACTERS )?

附注该问题也适用于其他库。它不适用于pexpect库,因为它提供了 expect_exact解决这个问题的方法。但是,有人可能想要指定字符串(按原样)和正则表达式的混合。

最佳答案

如果 'reg' 是正则表达式,则必须使用原始字符串,如下所示

pat = re.compile(r'reg')

如果 reg 是绑定(bind)到正则表达式 str 的名称,请使用

reg = re.escape(reg)
pat = re.compile(reg)

关于python - 在 python 中创建正则表达式时忽略特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37239625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com