在 re.findall() 正则表达式函数中使用变量



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

它不再有效。我该如何解决它?

谢谢!穗

你想多了。r前缀不是模式字符串本身的一部分,它仅指示以下字符串不应对某些字符使用转义代码。

这将在不调整模式的情况下工作:

re.findall(pattern, list)

如果pattern包含不需要转义的字符(因为它们不需要转义(,则可以将前缀r添加到模式定义中。假设您要搜索不同的正则表达式,然后使用

pattern = r'kwpwa'
re.findall(pattern, list)

而且你不需要逃避它。由于pattern本身是一个完全普通的字符串,因此您可以将其与其他字符串连接起来:

start = 'a'
middle = 'b'
end = 'c'
pattern = a + r'w' + b + r'w' + c
re.findall(pattern, list)

最新更新