Python,正则表达式:如何从字符串中删除letter.letter(a.b)?

时间:2017-04-03 17:44:50

标签: python regex

如何从python中的字符串中删除letter-dot-letter(例如F.B)的组合?我尝试使用正则表达式:

abre = re.sub(r"\b\w+\.\w+@",'',abre)

但它不会删除这些序列,只是打印出相同的未更改的字符串。我也尝试删除所有点,然后删除小于2个字母的单词,但在这种情况下,我松散了真实的单词。

我拥有的:C.P.A。认证计划,会计

我想得到的:认证计划,会计

序列的长度并不总是已知,字母也是未知的。

2 个答案:

答案 0 :(得分:1)

您似乎想要删除由点分隔的大写字母组成的单词。

使用

abre = re.sub(r"\b(?:[A-Z]\.)+(?!\w)",'',abre)

请参阅regex demo。要同时删除尾随空格,您可以在末尾添加\s*。如果必须至少有两个字母,请将+替换为{2,}

<强>详情:

  • \b - 领先的字边界
  • (?:[A-Z]\.)+ - 一个或多个序列
    • [A-Z] - 一个大写的ASCII字母
    • \. -a dot
  • (?!\w) - 后面没有单词char

答案 1 :(得分:0)

您可以使用replace

>>> string="rgoa.bwtg.rgqra.bergeg"
>>> string.replace("a.b", "")
'rgowtg.rgqrergeg'