我正在尝试将 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}。
