使用多个匹配关键字重新搜索

时间:2016-01-08 08:41:12

标签: python regex

我在下面的代码中查找字符串中的匹配关键字。我的问题是如何在“查找”中包含多个关键字?我应该使用数组还是其他东西。

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

试过这个。失败..

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

import re

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


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

2 个答案:

答案 0 :(得分:2)

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

find = r'\bpython\b.*\bgreat\b|\bgreat\b.*\bpython\b|'

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

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").

答案 1 :(得分:1)

您可以使用循环来匹配find中的所有单词。循环,当它找不到单词时打破循环(并打印缺少的单词)。如果找到所有单词,则打印'找到所有子字符串'。

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")