首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python regex,用于提取带有+符号的单词

Python regex,用于提取带有+符号的单词
EN

Stack Overflow用户
提问于 2019-09-17 21:41:16
回答 2查看 66关注 0票数 2

我们有文本作为

代码语言:javascript
运行
复制
"Google and Bert+Amazon+Alexa' 

预期的输出是,当我们将搜索文本作为Google和Bert传递时,输出应该是"Google和Bert“,而当输入的搜索词是Google时,它应该不匹配。需要匹配到完整的文本,该文本可以在符号"+“之前或之间或之后

代码语言:javascript
运行
复制
pattern = r'(?:^|\+)' + 'Amazon' + '(?:$|\+)' 
re.search(pattern, "Google and Bert+Amazon+Alexa").group()

Output is: +Amazon+ but the expected output is Amazon
EN

回答 2

Stack Overflow用户

发布于 2019-09-17 21:55:40

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

代码语言:javascript
运行
复制
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),但它似乎不是您在这里真正需要的。

票数 3
EN

Stack Overflow用户

发布于 2019-09-17 22:14:59

当您调用search时,至少使用一个采集组,捕获的文本返回如下:

代码语言:javascript
运行
复制
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)

matchsearch中:group() and group(0)将返回整个匹配,捕获的组在groups()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57975575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档