亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

匹配列表中 4 個或更多單詞的正則表達式

匹配列表中 4 個或更多單詞的正則表達式

九州編程 2022-07-26 09:40:56
背景我們有一個維護正則表達式存儲庫的系統,并根據這些正則表達式檢查一些傳入文本以用于某些過濾目的。我們正在嘗試構建的正則表達式之一如下所述。由于生產限制,我正在尋找的解決方案嚴格基于正則表達式。問題我有一個單詞列表: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 表示法提出任何建議?編輯:添加了一些背景信息。
查看完整描述

3 回答

?
千萬里不及你

TA貢獻1784條經驗 獲得超9個贊

以下正則表達式適用于我的所有測試:

(?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)之前的行首或邊界字符,我認為這也是缺失的。


查看完整回答
反對 回復 2022-07-26
?
胡說叔叔

TA貢獻1804條經驗 獲得超8個贊

您不需要使用正則表達式。如果您只關心任何單詞的出現次數,那么您可以將輸入列表轉換為 aset并對其執行intersection操作。


wrd_list = ["word1", "word2", "word3", "word4", "word5", "word6", "word7", "word8", "word9", "word10"]


s = "Abc word3 def word2 ghi word7 jkl word1 mno word5"


if len(set(wrd_list).intersection(s.split())) > 4:

    print('more than 4 occurrences found')

編輯:此代碼在 Python 中


查看完整回答
反對 回復 2022-07-26
?
慕尼黑5688855

TA貢獻1848條經驗 獲得超2個贊

也許這個(不是正則表達式,但我認為更具可讀性):


words = ['word1', 'word2', 'word3', 'word4', 'word5', 'word6', 'word7', 'word8', 'word9', 'word10']

text = "Abc word2 def ghi word8"

sum(i in text for i in words)


查看完整回答
反對 回復 2022-07-26
  • 3 回答
  • 0 關注
  • 103 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號