正则表达式,用于查找作为输入字符串子集的行

时间:2015-07-12 19:50:43

标签: regex

我是regex的新手并且尝试制定一个但没有成功。输入字符串包含多个逗号分隔的单词,例如蝙蝠,猫,垫,鼠。我需要查找作为此字符串子集的所有行,例如它应该找到作为该字符串子集的行,但它不应该返回包含除这些单词以外的任何行的行。

输入字符串

bat,cat,mat,rat

应匹配以下行:

bat    
bat,cat    
bat,mat,rat    
cat,mat    
mat

不应匹配以下行:

bat,pat    
bat,cat,pat    
pat

2 个答案:

答案 0 :(得分:1)

^(?:bat|cat|mat|rat)(?:,(?:bat|cat|mat|rat)\b)*$

试试这个。看看演示。

https://regex101.com/r/hR7tH4/11

如果您不想匹配bat,bat

,请使用此选项
^(?!.*?\b(\w+)\b.*?\b\1\b)(?:bat|cat|mat|rat)(?:,(?:bat|cat|mat|rat)\b)*$

https://regex101.com/r/hR7tH4/12

答案 1 :(得分:0)

您不需要正则表达式来执行此操作:

  1. 按逗号分割输入字符串,并将字词存储在哈希集中以便快速查找。
  2. 用逗号分隔每一行,并检查散列集中是否存在每个单词。如果是,则该线路通过测试。如果不存在一个单词 - 它就不存在。