有一个单词序列
'dog,cat,dog,cat,dog,cat,bird,cat,bird'
我想匹配“狗”的正则表达式。发生3次,然后“鸟”#39;发生2次。所以我写下正则表达式如下:
^(((?!dog).)*dog){3}((?!(dog|bird)).)*(((?!bird).)*bird){2}((?!(bird)).)*$
但问题是,当我指定“狗”的频率时。如果是2或1,正则表达式仍然匹配,这不是我想要的。
那么我怎样才能正确匹配有序事件?
谢谢。
答案 0 :(得分:0)
使用否定的前瞻,您可以使用此正则表达式:
^(?:(?:(?!dog).)*dog,){3}(?!.*dog)(?:(?:(?!bird).)*bird){2}(?!.*bird)
请注意,在关键字匹配的末尾使用(?!.*dog)
和(?!.*bird)
可防止匹配字符串出现更多这些字词。