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

Sup*_*rio 0 python regex

我尝试编写一个行为如下的代码:

输入:“ab 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)
Run Code Online (Sandbox Code Playgroud)

Seb*_*ske 6

你应该能够将这些词与

\b([a-z]) (?=[a-z]\b)
Run Code Online (Sandbox Code Playgroud)

然后替换为

\g<1>
Run Code Online (Sandbox Code Playgroud)

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

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)
Run Code Online (Sandbox Code Playgroud)

会输出 ab cc e ddd fgh

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