我正在尝试使用 re.findall 与后视和前瞻来提取数据。当我不使用 raw_input 变量时,正则表达式工作正常,但我需要用户能够输入各种不同的搜索词。
这是当前的代码:
me = re.findall(r"(?<='(.+)'+variable+'(.+)')(.*?)(?='(.+)+variable+(.+)')", raw)
正如您所看到的,我正在尝试提取一个搜索词之间的字符串。
但是,每次使用这种类型的格式时,都会出现固定宽度错误。有没有办法解决?
我也尝试过以下格式但没有成功。
variable = raw_input('Term? ')
'.*' + variable + '.*'
and
'.*%s.*' % (variable, )
and
'.*{0}.*'.format(variable)
and
'.*{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
如果您确实想要结果中的最后一个“鱼”,如上面的评论所示,那么只需删除第二个{0}
来自format()
string.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)