如何使用正则表达式将零填充到字符串中-仅使用regex101.com

问题描述 投票:0回答:1

我需要提供“正则表达式”和“替换”来填充少于10个字符的任何带有零的字符串。它必须在regex101.com上工作,并且具有PHP风格。这就是我所需要的。

Example Input:

123
12345
1234567891

Expected output:

0000000123
0000012345
1234567891

我希望这很简单,只需搜索([0-9] {1,9})并将其替换为000000000 $ 1,但显然字符串的长度将超过10个字符。所以我正在尝试使用预读语法,但是没有运气。

regex pcre
1个回答
0
投票

正如您在问题下方的评论中提到的那样,我提供了一种.NET方法,该方法使用目录在正则表达式中填充字符串,而无需使用条件替换(see my answer here)。

此答案可以通过使用分支复位组(?|...)来适应PCRE。

See regex in use here

选项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
© www.soinside.com 2019 - 2024. All rights reserved.