例如:
我无法使用re.sub(r' ', '', content)
。因为我想保留多个连续空白,只需将隔离的单个空白替换为空字符串。
我知道如何通过[^ ]( )[^ ]
但它也会左右匹配:
我知道我可以做类似
的事情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 '
答案 0 :(得分:3)
您可以使用
re.sub(r'(?<! ) (?! )', '', content)
或者,处理任何空格:
re.sub(r'(?<!\s)\s(?!\s)', '', content)
请参阅regex demo。
要匹配未包含在相同字符中的单个事件,您需要一个基于lookbehind / lookahead的方法,如上所述。
(?<! )
确保当前位置左侧没有空格,(?! )
确保当前位置右侧没有空格。