在re.findall()regex函数中使用变量

时间:2018-01-09 18:33:23

标签: python regex

我有一个正则表达式列表,如 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)

它不再有效。我该怎么办呢?

谢谢! 斯派克

1 个答案:

答案 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)