python-3.x - 匹配字符串中同时出现的单词

标签 python-3.x

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

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

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

关于python-3.x - 匹配字符串中同时出现的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56460540/

相关文章:

python - 为什么 __instancecheck__ 并不总是根据参数调用?

python-3.x - 命令行或 .exe 中的 Python 程序给出 MemoryError,但在 Spyder IDE 中工作正常

python - 无法确定Cassandra中Select查询速度慢的原因

python - 子进程,从 STDOUT 读取时重复写入 STDIN (Windows)

python - sys.exc_info 还是 sys.last_*?

python - 如何使用索引作为数据帧列来 "merge"多个 pandas 数据帧?

Python 多处理 - 池中的进程数量是否会因错误而减少?

python - SWIG 和 Python3 导入错误

python - 检查列表是否存在于没有循环的字典列表中

python - 在 kivy 标签上生成随机数