我需要提供“正则表达式”和“替换”来填充少于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
^((?|[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