我正在尝试匹配字符串中同时出现的单词,而不考虑它们出现的顺序。
我尝试过做一些非常基础的事情。它给了我预期的结果,但我必须匹配用户输入的任意数量的单词。
示例:用户想要匹配“great product”
str="great product. affordable useful cool."
if (str.find("great product")) != -1 or (str.find("product great")) != -1:
print(str)
给出预期的结果。 现在,如果用户想检查字符串是否包含单词
"useful affordable cool"
只要它们一起出现,顺序不限。
str 有这些词,因此它必须匹配。
我该怎么做?我应该使用正则表达式吗?
如有任何帮助,我们将不胜感激。谢谢!
请您参考如下方法:
如果你想通过一个正则表达式来处理这个问题,你可以尝试使用这个模式:
^(?=.*\buseful\b)(?=.*\baffordable\b)(?=.*\bcool\b).*$
Python 脚本:
input = "great product. affordable useful cool."
match = re.match(r'^(?=.*\buseful\b)(?=.*\baffordable\b)(?=.*\bcool\b).*$', input)
if match:
print("MATCH")
上面的正则表达式模式使用了肯定的前瞻,每个前瞻都断言其中一个关键字出现在输入字符串中。例如:
(?=.*\buseful\b)
断言 useful
出现。三个前瞻的组合涵盖了所有三个关键字。