我有一堆街道名字,我正在尝试清理街头名称,如“圣奥古斯丁”和“圣奥古斯丁”,所以我可以用“圣奥古斯丁”代替它们 我试图匹配“St”或“St.”,我尝试使用以下,但它似乎不匹配点。我正在使用python。
\bSt\.?\b
答案 0 :(得分:1)
.
不是单词字符,因此点后面没有单词边界。在点之前查找单词boundary :
>>> re.findall(r'\bSt\.?\b', 'St. Augustine')
['St']
>>> re.findall(r'\bSt\b\.?', 'St. Augustine')
['St.']
答案 1 :(得分:0)
试试这个,一个可选的匹配组:
r'\bSt(\.)?\b'
例如,要匹配Important
或Import
:
r'\Import(ant)?\'
答案 2 :(得分:0)
在Python的字符串文字中,\ b是退格字符,ASCII值8.如果你没有使用原始字符串,那么Python会将\ b转换为退格键,你的RE将不会像你期望的那样匹配到。
所以我猜测(因为你的帖子缺少信息)问题的解决方案是r'\bSt\.?\b'
(原始字符串,否则\b
表示退格)。