python-重新为匹配的字符串留出空间

时间:2019-04-09 09:32:35

标签: python regex python-3.x re-python

我正在python中使用re模块来删除某些字符串的出现。以下是我正在尝试的:

>>> import re
>>> t = re.sub(re.compile('ab'), "", 'This is a ab text')
>>> t
'This is a  text'

请注意,在上面,不要用'(什么都没有)替换'ab',而是用空格替换。 有人可以在这里提出什么问题吗?

1 个答案:

答案 0 :(得分:5)

替换实际上是空字符串,但是由于ab的两侧都被空格包围,因此替换似乎有一个空格。试试这个版本:

t = re.sub(r'\s*ab\s*', " ", 'This is a ab text')
print(t)

This is a text

上述模式\s*ab\s*匹配并消耗ab及其周围的空格,然后仅替换为一个空格。

对于边缘情况,其中ab可能是字符串中的第一个或最后一个词,我建议使用strip(),例如

t = re.sub(r'\s*ab\s*', " ", 'ab tests can be so boring ab').strip()
print(t)

tests can be so boring