首页 > 解决方案 > 使用正则表达式删除仅包含“x”作为重复模式的单词

问题描述

我有以下文字:

text = "upi xxxxxxxxxx manoj jayant xxx xxxxxxx532kvblhii"

我正在尝试删除仅包含单词的重复模式x以获取如下输出:

out = "upi manoj jayant xxxxxxx532kvblhii"

我使用了以下正则表达式,它给出了错误的输出

re.sub('[x]', '', text)

out = "upi  manoj jayant 532kvblhii"

请帮我纠正我的正则表达式。

标签: pythonregex

解决方案


使用单词边界仅表示完全由 组成的单词x

text = "upi xxxxxxxxxx manoj jayant xxx xxxxxxx532kvblhii"
out = re.sub(r'\s*\bx+\b\s*', ' ', text)
print(out.strip())

这打印:

upi manoj jayant xxxxxxx532kvblhii

这里的逻辑是坚持xxx只匹配整个单词。我们还消耗两端的所有空格,然后用一个空格替换,以保持其他周围单词之间的分隔。这样做有一个极端情况,即在输出的开头和结尾可能会留下额外的空格,然后我们将其剥离。


推荐阅读