Python正则表达式,用于提取具有+符号的单词

Python正则表达式,用于提取具有+符号的单词,python,regex,python-3.x,Python,Regex,Python 3.x,我们有文本作为 "Google and Bert+Amazon+Alexa' 预期的输出是当我们将搜索文本传递为Google和Bert时,那么输出应该是Google和Bert,当输入的搜索词是Google时,它不应该匹配。需要与完整的文本相匹配,可以在符号之前、之间或之后+ pattern = r'(?:^|\+)' + 'Amazon' + '(?:$|\+)' re.search(pattern, "Google and Bert+Amazon+Alexa").group() Out

我们有文本作为

"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

实际上,此处不需要正则表达式,只需使用+拆分字符串并检查搜索是否在结果列表中:

s = "Google and Bert+Amazon+Alexa"
search = "Google and Bert"
if search in s.split('+'):
    print(search)
else:
    print("NO MATCH!")

s.split“+”的结果将是['Google and Bert'、'Amazon'、'Alexa'],您将在此列表中搜索Google和Bert,并返回/显示搜索短语

关于regex方法,您可以尝试pattern=r'?:^ | \+'+re.escapesearch+'?:$| \+',然后再尝试re.searchpattern、Google和Bert+Amazon+Alexa.group1,但这似乎不是您真正需要的。当您调用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 and search(匹配和搜索):group and group0将返回整个匹配,如果您只需检查两个组之间是否存在字符串,则捕获的组将在组中

,如果重新搜索成功,则使用符号打印搜索字符串。请注意,您可能需要重新使用escapesearch\u短语。当然,您可以使用pattern=r'?:^ | \+'+'亚马逊'+'?:$然后使用re.searchpattern、Google和Bert+Amazon+Alexa.group1,但这可能是错误的逻辑。pattern=r'?:^ | \+'+'PAmazon'+'?:$124; \+'re.searchpattern、Google和Bert+Amazon+Alexa.groups[0]