python - 如何匹配其中包含正则表达式语法的字符串?

标签 python regex pexpect

假设我有一个像

这样的字符串
x = "spam ?and eggs"

我正在尝试匹配 "?and"。目前我是这样做的:

>>> print re.findall(re.escape('?and'), x)
['?and']

这是 re.escape 的正确用例吗?它是否可以与我正在寻找的任何其他字符串文字一起使用,其中可能包含其他类型的正则表达式语法?

我的用例是 pexpect.spawn.expect(pattern) 中的参数,其中输入模式可以是字符串类型,它被编译成正则表达式。在某些情况下,我正在搜索的内容可能看起来像一个正则表达式,但它实际上是我想要匹配的字符串文字。

最佳答案

是的,这正是 re.escape 的正确用例 — the documentation说“如果你想匹配其中可能包含正则表达式元字符的任意文字字符串,它很有用”——尽管在你的第一个例子中,我认为使用以下任何一种方法自己转义问号要简单一些:

re.findall(r'\?and', x)          # \? in a raw string literal
re.findall('\\?and', x)          # \? in a non-raw string literal, so, \\?
re.findall('[?]and', x)          # "cheat" by using a character class

关于python - 如何匹配其中包含正则表达式语法的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9713129/

相关文章:

python - 这是我当前写入文件的方式。但是,我不能做UTF-8?

python - 计算上季末

python - 获取 Django 中所有唯一的 prefetch_lated 对象

c# - 正则表达式逗号分隔单个数字升序排列

ruby - 如何更改字符串中的特殊符号?

python - 期望发送光标移动

python - ping 无限长的时间并在 Python 中获取其输出

python - 如何生成终端?

python - 迭代字符串中子字符串的位置

regex - 模式也匹配连字符