匹配单词的正则表达式发生M次,然后单词二出现N次'从带有逗号的单词序列作为分割器

时间:2017-09-07 10:51:19

标签: regex regex-lookarounds

有一个单词序列

'dog,cat,dog,cat,dog,cat,bird,cat,bird'

我想匹配“狗”的正则表达式。发生3次,然后“鸟”#39;发生2次。所以我写下正则表达式如下:

^(((?!dog).)*dog){3}((?!(dog|bird)).)*(((?!bird).)*bird){2}((?!(bird)).)*$

但问题是,当我指定“狗”的频率时。如果是2或1,正则表达式仍然匹配,这不是我想要的。

那么我怎样才能正确匹配有序事件?

谢谢。

1 个答案:

答案 0 :(得分:0)

使用否定的前瞻,您可以使用此正则表达式:

^(?:(?:(?!dog).)*dog,){3}(?!.*dog)(?:(?:(?!bird).)*bird){2}(?!.*bird) 

RegEx Demo

请注意,在关键字匹配的末尾使用(?!.*dog)(?!.*bird)可防止匹配字符串出现更多这些字词。