正则表达式,匹配\ b之前的可选点

时间:2014-02-06 01:26:08

标签: python regex

我有一堆街道名字,我正在尝试清理街头名称,如“圣奥古斯丁”和“圣奥古斯丁”,所以我可以用“圣奥古斯丁”代替它们 我试图匹配“St”或“St.”,我尝试使用以下,但它似乎不匹配点。我正在使用python。

\bSt\.?\b

3 个答案:

答案 0 :(得分:1)

.不是单词字符,因此点后面没有单词边界。在点之前查找单词boundary

>>> re.findall(r'\bSt\.?\b', 'St. Augustine')
['St']
>>> re.findall(r'\bSt\b\.?', 'St. Augustine')
['St.']

答案 1 :(得分:0)

试试这个,一个可选的匹配组:

r'\bSt(\.)?\b'

例如,要匹配ImportantImport

r'\Import(ant)?\'

答案 2 :(得分:0)

Python docs say:

  

在Python的字符串文字中,\ b是退格字符,ASCII值8.如果你没有使用原始字符串,那么Python会将\ b转换为退格键,你的RE将不会像你期望的那样匹配到。

所以我猜测(因为你的帖子缺少信息)问题的解决方案是r'\bSt\.?\b'(原始字符串,否则\b表示退格)。