如何使用正则表达式将零填充到字符串中 - 仅使用 regex101.com
How to pad zeroes into String using regex - using only regex101.com
我需要想出 "Regular expression" 和 "Substitute" 来用零填充任何短于 10 个字符的字符串。它必须适用于 regex101.com、PHP 风味。这就是我所需要的。
Example Input:
123
12345
1234567891
Expected output:
0000000123
0000012345
1234567891
我希望搜索 ([0-9]{1,9}) 并将其替换为 000000000$1 很简单,但显然字符串会超过 10 个字符的长度。所以我正在尝试使用预读语法但没有成功。
正如您在问题下方的评论中提到的,我提供了一种 .NET 方法,它使用目录来填充正则表达式中的字符串,而不使用条件替换 (see my answer here)。
这个答案可以通过使用分支重置组来适应 PCRE (?|...)
。
选项 gJsm
和替代 ${x}
^((?|[1-9](?=.*1\t+(?<x>0+))|[1-9]\d(?=.*2\t+(?<x>0+))|[1-9]\d{2}(?=.*3\t+(?<x>0+))|[1-9]\d{3}(?=.*4\t+(?<x>0+))|[1-9]\d{4}(?=.*5\t+(?<x>0+))|[1-9]\d{5}(?=.*6\t+(?<x>0+))|[1-9]\d{6}(?=.*7\t+(?<x>0+))|[1-9]\d{7}(?=.*8\t+(?<x>0+))))\b
结果:
1
12
123
12345678
123456789
变成...
000000001
000000012
000000123
012345678
123456789
我需要想出 "Regular expression" 和 "Substitute" 来用零填充任何短于 10 个字符的字符串。它必须适用于 regex101.com、PHP 风味。这就是我所需要的。
Example Input:
123
12345
1234567891
Expected output:
0000000123
0000012345
1234567891
我希望搜索 ([0-9]{1,9}) 并将其替换为 000000000$1 很简单,但显然字符串会超过 10 个字符的长度。所以我正在尝试使用预读语法但没有成功。
正如您在问题下方的评论中提到的,我提供了一种 .NET 方法,它使用目录来填充正则表达式中的字符串,而不使用条件替换 (see my answer here)。
这个答案可以通过使用分支重置组来适应 PCRE (?|...)
。
选项 gJsm
和替代 ${x}
^((?|[1-9](?=.*1\t+(?<x>0+))|[1-9]\d(?=.*2\t+(?<x>0+))|[1-9]\d{2}(?=.*3\t+(?<x>0+))|[1-9]\d{3}(?=.*4\t+(?<x>0+))|[1-9]\d{4}(?=.*5\t+(?<x>0+))|[1-9]\d{5}(?=.*6\t+(?<x>0+))|[1-9]\d{6}(?=.*7\t+(?<x>0+))|[1-9]\d{7}(?=.*8\t+(?<x>0+))))\b
结果:
1
12
123
12345678
123456789
变成...
000000001
000000012
000000123
012345678
123456789