python - 使用正则表达式删除仅包含“x”作为重复模式的单词
问题描述
我有以下文字:
text = "upi xxxxxxxxxx manoj jayant xxx xxxxxxx532kvblhii"
我正在尝试删除仅包含单词的重复模式x
以获取如下输出:
out = "upi manoj jayant xxxxxxx532kvblhii"
我使用了以下正则表达式,它给出了错误的输出
re.sub('[x]', '', text)
out = "upi manoj jayant 532kvblhii"
请帮我纠正我的正则表达式。
解决方案
使用单词边界仅表示完全由 组成的单词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
只匹配整个单词。我们还消耗两端的所有空格,然后用一个空格替换,以保持其他周围单词之间的分隔。这样做有一个极端情况,即在输出的开头和结尾可能会留下额外的空格,然后我们将其剥离。
推荐阅读
- html - 下拉按钮不展开
- rust - 如何从 Rc 内部返回结构?
- c++ - Ceres Solver:对非线性最小二乘使用平滑近似
- java - Dijkstra 的最短路径
- xml - 递归连接父属性 - 并保留元素数据
- android - 关于 Google Cloud Platform (GCP) API 密钥的 Google Play 安全警报
- swift - 如何从 ViewController 在 ARKit 中重复调用一个函数来识别对象/图像?
- javascript - React - 未处理的拒绝(TypeError)this.function不是函数
- ios - WatchOS 检测用户是否已关闭手表/锁定屏幕
- apache-kafka - 卡夫卡多个生产者写同一主题?