我尝试编写一个行为如下的代码:
输入:“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)
你应该能够将这些词与
\b([a-z]) (?=[a-z]\b)
Run Code Online (Sandbox Code Playgroud)
然后替换为
\g<1>
Run Code Online (Sandbox Code Playgroud)
这将匹配单个字母单词(由单词边界确保)并捕获它。然后匹配一个空格并确保其后跟另一个单字母单词。替换是第一个捕获的组。
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