我一直在寻找解决办法,但没有成功。我真的不擅长正则表达式。我试图在数字和字符之间添加一个空格
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”以添加空间
鉴于:
你可以做:
您还可以使用regexpypi module来获取V之前的位置,前提是前面有以单词边界开头的数字
在替换中使用空格
解释
(?<=\b\d+)
正向查找,断言左侧是一个单词边界,后跟1+个数字(?=
正向前瞻,断言右边的是V
逐字匹配(?:[\s,-]|$)
匹配列出的字符之一或字符串)
关闭前瞻Regex demo和aPython demo using the regex module
输出
您可以将
<letter><digits>V
匹配并捕获到组1中,然后使用替换来匹配您的模式,然后分析作为替换参数传递的lambda中的match数据对象,并相应地进行替换正则表达式看起来像
见regex demo。它基本上是
([A-Za-z]\d+V)|YOUR_REGEX
,其中(...)
是λ中的x.group(1)
值。见Python demo:相关问题 更多 >
编程相关推荐