Python正则表达式发现者的第二组被第一个被捕获的组忽略了

时间:2016-06-20 15:41:22

标签: python regex

例如,我有以下字符串。

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两次?

1 个答案:

答案 0 :(得分:2)

由于两个空格分隔的数字匹配,因此在下一个匹配中不会再次出现。您可以做的是使用positive look ahead assertion作为第二位数。 Aldo您可以对数字组\d使用[0-9]短句柄。

input = re.sub(r"(\d)\s+(?=\d)", "\1", input)

Regex explanation here.

Regular expression visualization