Python 在re.findall()正则表达式函数中使用变量
我有一个正则表达式模式列表,比如k[a-z]p[a-z]+a 以及一系列符合这些模式的单词。现在问题是,, 当我使用:Python 在re.findall()正则表达式函数中使用变量,python,regex,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) 或 它不再起作用了。我怎样才能修好它 谢谢! 斯派克你想得太多了。r前缀不是模式字符串本身的一部分,它仅表示以下字符串不应对某些字
re.findall(r'k[a-z]p[a-z]+a', list)
一切正常,但当我用如下变量替换原始表达式时:
pattern = "r'" + pattern + "'"
然后尝试:
re.findall(pattern, list)
或
它不再起作用了。我怎样才能修好它
谢谢!
斯派克你想得太多了。
r
前缀不是模式字符串本身的一部分,它仅表示以下字符串不应对某些字符使用转义码
这将在不调整模式的情况下工作:
re.findall(pattern, list)
如果您的模式
包含不需要转义的字符(因为它们不需要转义),则可以将前缀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)
你是否打算将你的单词与模式
r'k[a-z]p[a-z]+a'
匹配?你到底想完成什么?这个问题在预期的解决方案中相当模糊嗨,欢迎来到!当您有时间时,请注意和。pattern=re.escape(pattern)
start = 'a'
middle = 'b'
end = 'c'
pattern = a + r'\w' + b + r'\w' + c
re.findall(pattern, list)