Python正则表达式只删除两个1个字母单词之间的空格

时间:2017-08-09 13:18:02

标签: python regex

我尝试编写一个行为类似的代码:

输入:“a b ccc” - > “ab ccc”

输入:“aa bb” - > “aa bb”

输入:“aa bb c d” - > “aa bb cd”

我成功编写了一个找到“a b”案例的正则表达式模板,但我不确定如何只删除空格。 这是我的尝试:

import re
sentence = "a b cc"
print(sentence)
pattern = re.compile(r'[^\s]{1}\s[^\s]{1}')
sentence = re.sub(pattern, 'xx', sentence)
print(sentence)

1 个答案:

答案 0 :(得分:4)

您应该能够将这些单词与

匹配
\b([a-z]) (?=[a-z]\b)

然后替换为

\g<1>

这将匹配单个字母单词(由单词边界确保)并捕获它。然后匹配一个空格并确保其后跟另一个单字母单词。替换是第一个被捕获的组。

Python

import re
sentence = "a b cc e ddd f g h"
pattern = re.compile(r'\b([a-z]) (?=[a-z]\b)', re.I)
sentence = re.sub(pattern, r'\g<1>', sentence)
print(sentence)

将输出ab cc e ddd fgh

另见https://regex101.com/r/y2chHw/1