假设我有一个像
这样的字符串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/