我想匹配单词末尾是否存在的所有字符,例如那些特定字符,例如:
我希望它与示例“ fooBars”和“ fooBars”匹配,但不包含“ Bar”,即使结尾不存在
我尝试过:
(.*)(?=Bar)|(.*)
还有这个:
[^Bar]*
对于第一个正则表达式,它按组捕获所有字符,而第二个正则表达式则捕获除“ Bar”之外的所有字符,但不捕获末尾的所有字符。
能帮我吗,谢谢
答案 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来一个或多个。
+
请进一步注意,^.+(?=Bar$)|^.+
表示与字符集中的negated character class匹配,该字符未在集合中列出。它不会匹配您认为并非[^Bar]
的子字符串。