我在下面的代码中查找字符串中的匹配关键字。我的问题是如何在“查找”中包含多个关键字?我应该使用数组还是其他东西。
处理我们想要搜索的多个关键字的最佳方法是什么。假设必须匹配所有关键字,则结果为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")
答案 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")