例如,我有以下字符串。
input = "a b c d e f 1 2 3 4"
我有以下正则表达式代码。
input = re.sub(r"([0-9])\s+([0-9])", "\1\2", input)
这基本上是试图删除只是数字之间的空格。
然而,在运行该代码后,我得到了以下结果。
input = "a b c d e f 12 34"
2到3之间的空间没有被替换。
有没有办法解决它而不运行sub两次?
答案 0 :(得分:2)
由于两个空格分隔的数字匹配,因此在下一个匹配中不会再次出现。您可以做的是使用positive look ahead assertion作为第二位数。 Aldo您可以对数字组\d
使用[0-9]
短句柄。
input = re.sub(r"(\d)\s+(?=\d)", "\1", input)