首页 > 解决方案 > python 正则表达式在数字和给定字符之间添加空格

问题描述

我一直在寻找解决方案,但没有成功。我真的不擅长 REGEX。我正在尝试在数字和字符之间添加空格。

text = "Split XXTX99V 23...490V -23V 34-499V".

预期输出:Split XXTX99V 23...490 V -23 V 34-499 V.

我的代码:

pattern = r'(?<=\d)V(?=[\s,-]|$)'
re.sub(pattern,' V', text, flags=re.I)
output: 
"Split XXTX99 V 23...490 V -23 V 34-499 V"

如何除“XXTX99V”添加空间?

标签: pythonregex

解决方案


您可以匹配并捕获<letter><digits>V到第 1 组,并使用替换匹配您的模式,然后分析作为替换参数传递的 lambda 中的匹配数据对象并相应地替换。

正则表达式看起来像

([A-Za-z]\d+V)|(?<=\d)V(?=[\s,-]|$)

请参阅正则表达式演示。它基本上是lambda([A-Za-z]\d+V)|YOUR_REGEX中的值。请参阅Python 演示(...)x.group(1)

import re
text = 'Split XXTX99V 23...490V -23V 34-499V'
pattern = r'([A-Za-z]\d+V)|(?<=\d)V(?=[\s,-]|$)'
print(re.sub(pattern, lambda x: x.group(1) or ' V', text, flags=re.I))
# => Split XXTX99V 23...490 V -23 V 34-499 V

推荐阅读