首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有多匹配关键字的re.search

具有多匹配关键字的re.search
EN

Stack Overflow用户
提问于 2016-01-08 08:41:12
回答 2查看 3.1K关注 0票数 0

下面有一个代码可以在字符串中找到一个匹配关键字。我的问题是如何在“查找”中包含多个关键字?我该用数组还是别的什么。

我们想要搜索的处理多个关键字的最佳方法是什么。假设所有关键字必须匹配,则结果为PASS。

试过这个。失败..。

(“bpython\b”,"\bgreat\b")?有什么想法吗?

代码语言:javascript
复制
import re

string = "python is great!"
find = ("\\bpython\\b")


if re.search(find, string):
    print ("found")
else:
    print ("not found")
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-08 08:53:24

要匹配这两者,您要么需要两个正则表达式,要么需要指定所有订单:

代码语言:javascript
复制
find = r'\bpython\b.*\bgreat\b|\bgreat\b.*\bpython\b|'

关于更多关键字,我建议您在一个循环中使用多个正则表达式:

代码语言:javascript
复制
import re

string = "python is great!"
words=["python","is","great"]

all_found=True
for w in words:
 if not re.search(r"\b"+w+r"\b", string):
    all_found=False
    break

if all_found:
    print ("found all words")
else:
    print ("at least one word missing").
票数 2
EN

Stack Overflow用户

发布于 2016-01-08 08:56:03

您可以使用循环来匹配find中的所有单词。循环通过,当它找不到一个单词时,中断循环(并打印缺少的单词)。如果找到所有单词,请打印“找到所有子字符串”。

代码语言:javascript
复制
import re

string = r"python is great!"
find = [r'python',r'great']

for substring in find:  
    if not re.search(r'\b'+substring+r'\b', string):
        print("'%s' not found" % substring)
        break
else:
    print ("all substrings are found")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34672714

复制
相关文章

相似问题

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