如何匹配具有regexy语法的字符串?

wim*_*wim 3 python regex pexpect

假设我有一个字符串

x = "spam ?and eggs"
Run Code Online (Sandbox Code Playgroud)

而我正试图与之相匹配"?and".目前我这样做:

>>> print re.findall(re.escape('?and'), x)
['?and']
Run Code Online (Sandbox Code Playgroud)

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

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

rua*_*akh 6

是的,这正是正确的用例re.escape- 文档说它"非常有用,如果你想匹配一个可能有正则表达式元字符的任意文字字符串" - 尽管在你的第一个例子中我认为它更容易逃脱问题标记你自己,使用以下任何一个:

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
Run Code Online (Sandbox Code Playgroud)