我有一个正则表达式列表,如 k [a-z] p [a-z] + a 以及可以适合这些模式的单词列表。现在,问题是, 当我使用时:
re.findall(r'k[a-z]p[a-z]+a', list)
一切正常,但当我用一个变量替换原始表达式时:
pattern = "r'" + pattern + "'"
然后尝试:
re.findall(pattern, list)
或
re.findall(str(pattern), list)
它不再有效。我该怎么办呢?
谢谢! 斯派克
答案 0 :(得分:0)
你正在思考它。 r
前缀不是模式字符串本身的一部分,它仅表示以下字符串不应对某些字符使用转义码。
这可以在不调整模式的情况下工作:
re.findall(pattern, list)
如果pattern
包含不需要转义的字符(因为它们不包含),则可以将前缀r
添加到模式定义中。假设您要搜索不同的正则表达式,请使用
pattern = r'k\wp\wa'
re.findall(pattern, list)
你不需要逃避它。由于pattern
本身就是一个非常普通的字符串,因此可以将其与其他字符串连接起来:
start = 'a'
middle = 'b'
end = 'c'
pattern = a + r'\w' + b + r'\w' + c
re.findall(pattern, list)