regex - 是否可以使用正则表达式用零填充整数?

标签 regex padding

我在某些文本中有一系列不同长度的数字(从 1 到 6 位数字不等)。我想通过用零填充较短的数字来平衡所有这些数字的长度。

例如。以下 4 行 -

A1:11
A2:112
A3:223333
A4:1333
A5:19333
A6:4

应该成为填充整数
A1:000011
A2:000112
A3:223333
A4:001333
A5:019333
A6:000004

我正在使用“sed”和以下复杂的表达方式:
sed -e 's/:\([0-9]\{1\}\)\>/:00000\1/' \
    -e 's/:\([0-9]\{2\}\)\>/:0000\1/' \
    -e 's/:\([0-9]\{3\}\)\>/:000\1/' \
    -e 's/:\([0-9]\{4\}\)\>/:00\1/' \
    -e 's/:\([0-9]\{5\}\)\>/:0\1/'

有没有可能用比这更好的表达方式来做到这一点?

最佳答案

您可以用太多的零填充它,然后只保留最后六位数字:

sed -e 's/:/:00000/;s/:0*\([0-9]\{6,\}\)$/:\1/'

结果:
A1:000011
A2:000112
A3:223333
A4:001333
A5:019333
A6:000004

It might be better to use awk though:

awk -F: '{ printf("%s:%06d\n", $1, $2) }'

关于regex - 是否可以使用正则表达式用零填充整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3121596/

相关文章:

regex - 如何在 React Router DOM 中使用正则表达式从路由匹配中排除参数?

正则表达式错误无法编译 Match.Count

html - 为什么这些 inline-block div 元素之间存在无法解释的差距?

css - 避免某些相邻元素和类之间的 CSS 样式

java - 是否可以在String.replaceAll中使用当前替换的数量?

Java计算字符串中某个单词的出现次数

java - 如何向 jtextfield 添加填充

c - C中用0填充字符

java - 截断和填充整数

python - 对字符串中与正则表达式模式不匹配的所有部分进行操作的函数