我正在尝试匹配字符串中同时出现的单词,而不考虑它们出现的顺序。

我尝试过做一些非常基础的事情。它给了我预期的结果,但我必须匹配用户输入的任意数量的单词。

示例:用户想要匹配“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 出现。三个前瞻的组合涵盖了所有三个关键字。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!