仅用空蜇替换单个空白,但保留多个空白

时间:2018-04-19 07:47:51

标签: python regex

例如:

我无法使用re.sub(r' ', '', content)。因为我想保留多个连续空白,只需将隔离的单个空白替换为空字符串。

我知道如何通过[^ ]( )[^ ]

匹配单个空白

但它也会左右匹配:

regex 101 pic

我知道我可以做类似

的事情
re.sub(r'  +', '$$$$$', content)
re.sub(r' ', '', content)
re.sub(r'$$$$$', '     ', content) 

但我想知道有没有简单的方法来实现我的目标?

感谢@WiktorStribiżew,第一个工作

In [2]: content = "ss ss   sss ddd rrt        d d dd     "

In [3]: re.sub(r'(?<! ) (?! )', '', content)
Out[3]: 'ssss   sssdddrrt        dddd     '

In [4]: re.sub(r'( ) ( )', r'\1\2', content)
Out[4]: 'ss ss  sss ddd rrt      d d dd    '

1 个答案:

答案 0 :(得分:3)

您可以使用

re.sub(r'(?<! ) (?! )', '', content)

或者,处理任何空格:

re.sub(r'(?<!\s)\s(?!\s)', '', content)

请参阅regex demo

要匹配未包含在相同字符中的单个事件,您需要一个基于lookbehind / lookahead的方法,如上所述。

(?<! )确保当前位置左侧没有空格,(?! )确保当前位置右侧没有空格。