Python3正则表达式模式计数结束时可选的句点

时间:2018-01-10 04:34:02

标签: regex string python-3.x

我试图使用Python3和regex计算模式的出现次数。

我的方法目前(基于另一个stackoverflow线程):

count = sum(1 for _ in re.finditer(r'\b{0}\b'.format(re.escape(vals)), doc))

然而,如果' vals'包含句点,例如:

vals = '42.'
doc = 'I like 42. a lot'

当然为了强制这个特定的例子起作用,我可以包括一个句号:'{0}.'但是那个工作休息时间值不包含句号...

1 个答案:

答案 0 :(得分:2)

Wen vals是42.,你的正则表达式是\b42\.\b。在这里,\b断言必须有一个单词边界,并且因为. 不是一个单词字符,这意味着它不能跟一个单词字符。

你似乎总是希望你的正则表达式后跟一个非单词字符,无论val的最后一个字符是什么,所以只需让你的正则表达式明确地说,改为:

r'\b{0}(?!\w)'.format(re.escape(vals))

同样,您可能希望\b在开头更改为(?<!\w)(前面没有单词字符)。