Skip to main content
 首页 » 编程设计

带有变量的 Python 正则表达式 findall

2025年05月04日23haluo1

我正在尝试将 re.findall 与后视和前视结合使用来提取数据。当我不使用 raw_input 变量时正则表达式工作正常,但我需要用户能够输入各种不同的搜索词。

这是当前代码:

me = re.findall(r"(?<='(.+)'+variable+'(.+)')(.*?)(?='(.+)+variable+(.+)')", raw) 

如您所见,我试图在一个搜索词之间提取字符串。

但是,每次我使用这种格式时,都会出现固定宽度错误。有什么办法吗?

我也尝试了以下格式但没有成功。

variable = raw_input('Term? ') 
'.*' + variable + '.*' 

和

'.*%s.*' % (variable, ) 

和

'.*{0}.*'.format(variable) 

和

 '.*{variable}.*'.format(variable=variable) 

请您参考如下方法:

我不确定这是否是您的意思,但这可能会让您入门。据我了解你的问题,你不需要前瞻或后视。这适用于 Python 2.x(不适用于 Python 3):

>>> import re 
>>> string_to_search = 'fish, hook, swallowed, reeled, boat, fish' 
>>> entered_by_user = 'fish' 
>>> search_regex = r"{0}(.+){0}".format(entered_by_user) 
>>> match = re.search(search_regex, string_to_search) 
>>> if match: 
...     print "result:", match.group(1).strip(' ,') 
... 
result: hook, swallowed, reeled, boat 

如果您真的想要结果中的最后一条“鱼”,如您上面的评论所示,那么只需从 format() 字符串中删除第二个 {0}。