我们有文本作为
"Google and Bert+Amazon+Alexa'
预期的输出是,当我们将搜索文本作为Google和Bert传递时,输出应该是"Google和Bert“,而当输入的搜索词是Google时,它应该不匹配。需要匹配到完整的文本,该文本可以在符号"+“之前或之间或之后
pattern = r'(?:^|\+)' + 'Amazon' + '(?:$|\+)'
re.search(pattern, "Google and Bert+Amazon+Alexa").group()
Output is: +Amazon+ but the expected output is Amazon
发布于 2019-09-17 21:55:40
实际上,这里不需要正则表达式,只需使用+
拆分字符串,并检查search
是否在结果列表中:
s = "Google and Bert+Amazon+Alexa"
search = "Google and Bert"
if search in s.split('+'):
print(search)
else:
print("NO MATCH!")
请参阅Python demo。
s.split('+')
的结果将是['Google and Bert', 'Amazon', 'Alexa']
,您将在该列表中搜索Google and Bert
,并返回/显示搜索短语。
关于正则表达式方法,您可能会先尝试pattern = r'(?:^|\+)(' + re.escape(search) + ')(?:$|\+)'
,然后再尝试re.search(pattern, "Google and Bert+Amazon+Alexa").group(1)
,但它似乎不是您在这里真正需要的。
发布于 2019-09-17 22:14:59
当您调用search
时,至少使用一个采集组,捕获的文本返回如下:
import re
pattern = r'(?:^|\+)(Amazon)(?:$|\+)'
r = re.search(pattern, "Google and Bert+Amazon+Alexa")
print(r.groups()) # ('Amazon',)
print(r.group(1)) # 'Amazon' not group(0)
在match
和search
中:group() and group(0)
将返回整个匹配,捕获的组在groups()
中
https://stackoverflow.com/questions/57975575
复制相似问题