3 回答
TA贡献1784条经验 获得超9个赞
以下正则表达式适用于我的所有测试:
(?i)(.*(^|\b)((word1)|(word2)|(word3)|(word4)|(word5)|(word6)|(word7)|(word8)|(word9)|(word10))($|\b).*){4,}
他们包括:
“Abc word3 def word2 ghi word7 jkl word1 mno word5”-> true
“Abc word2 def ghi word8”-> false
“word3 sadasd sadasd word1 word2 word4”-> true
“word3 sadasd sadasd word1 word2word4”-> false
“aword3 sadasd sadasd word1 word2 word4”-> false
“word3 sadasd sadasd word1 word2 word4a”-> false
我认为您的原始正则表达式主要缺少.*
匹配关键字前后的任何字符串。
我还仔细检查了它是否是关键字(测试 5)之前的行首或边界字符,我认为这也是缺失的。
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 中
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)
添加回答
举报