匹配单词之前的所有单词(如果存在)

时间:2018-08-11 22:34:47

标签: regex

我想匹配单词末尾是否存在的所有字符,例如那些特定字符,例如:

  • fooBarsBar
  • fooBars

我希望它与示例“ fooBars”和“ fooBars”匹配,但不包含“ Bar”,即使结尾不存在

我尝试过:

(.*)(?=Bar)|(.*)

还有这个:

[^Bar]*

对于第一个正则表达式,它按组捕获所有字符,而第二个正则表达式则捕获除“ Bar”之外的所有字符,但不捕获末尾的所有字符。

能帮我吗,谢谢

1 个答案:

答案 0 :(得分:1)

有不同的方法,但是您的第一个regex模式看起来已经不错了。

在前瞻范围内添加anchors # with lru_cache $ time python3 combination_sum.py CacheInfo(hits=59984, misses=49996, maxsize=None, currsize=49996) real 0m4.031s user 0m3.996s sys 0m0.024s # without lru_cache $ time python3 combination_sum.py real 0m0.073s user 0m0.060s sys 0m0.010s 以开始和^结束,并使用$ quantifier一个或多个

+

Here is a demo at regex101

请进一步注意,^.+(?=Bar$)|^.+ 表示与字符集中的negated character class匹配,该字符未在集合中列出。它不会匹配您认为并非[^Bar]的子字符串。