gpt4 book ai didi

java - 匹配列表中 4 个或更多单词的正则表达式

转载 作者:行者123 更新时间:2023-12-01 06:25:35 25 4
gpt4 key购买 nike

背景

我们有一个系统,可以维护正则表达式存储库,并根据这些正则表达式检查一些传入文本,以达到某些过滤目的。我们正在尝试构建的正则表达式之一如下所述。由于生产限制,我正在寻找的解决方案严格基于正则表达式。

问题

我有一个单词列表:word1、word2、word3、word4、word5、word6、word7、word8、word9、word10。我正在尝试编写一个正则表达式,如果字符串包含 4 个或更多这些单词(在任何位置以任何顺序),则该正则表达式会与该字符串匹配。

示例

  • “Abc word3 def word2 ghi word7 jkl word1 mno word5”应该是匹配的,因为它在给定列表中包含超过 4 个单词。
  • “Abc word2 def ghi word8”不应该是匹配项,因为它只有给定列表中的 2 个单词。

当前状态

我有以下正则表达式,但它似乎没有达到我的需要。

((?i)((word1)|(word2)|(word3)|(word4)|(word5)|(word6)|(word7)|(word8)|(word9)|(word10))\b){4,}

请问有什么建议吗,用 Java 或 Python 表示法?

编辑:添加了一些背景信息。

最佳答案

以下正则表达式适用于我的所有测试:

(?i)(.*(^|\b)((word1)|(word2)|(word3)|(word4)|(word5)|(word6)|(word7)|(word8)|(word9)|(word10))($|\b).*){4,}

它们包括:

  1. “Abc word3 def word2 ghi word7 jkl word1 mno word5”-> true
  2. “Abc word2 def ghi word8”-> false
  3. “word3 Sadasd Sadasd word1 word2 word4”-> true
  4. “word3 Sadasd Sadasd word1 word2word4”-> false
  5. “aword3 Sadasd Sadasd word1 word2 word4”-> false
  6. “word3 Sadasd Sadasd word1 word2 word4a”-> false

我认为您原来的正则表达式主要缺少 .* 来匹配关键字之前和之后的任何字符串。

我还仔细检查了它是否是行首或关键字之前的边界字符(测试 5),我认为这也丢失了。

关于java - 匹配列表中 4 个或更多单词的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60161113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com