0

我正在寻找一种在整数和连字符字符串中添加任何单个数字的方法。例如

“-0-2-3---12-0---10-”变为“-00-02-03---12-00---10-”

或者

“-12-14-7-8-”变成“-12-13-07-08-”

我试过使用 \d{1} 和破折号的组合,但它似乎没有捕获所有正确的部分。任何帮助将不胜感激。如果正则表达式太复杂而无法做到这一点,请碰巧编写某种遍历器。

谢谢

4

2 回答 2

3

如果正则表达式引擎支持环视断言,那么这是一种方法:

s/(?<!\d)(?=\d(?!\d))/0/g

如果正则表达式引擎不支持后向断言(例如 JavaScript),则:

s/(^|[^\d])(?=\d(!\d))/$10/g

如果正则表达式引擎根本不支持环视断言,那么:

s/(^|[^\d])(\d)([^\d])/$10$2$3/g
于 2012-10-26T21:45:04.103 回答
2

我会使用类似的东西

s/-\([0-9]\)-/-0\1-/g

这不适用于相邻的单个数字,但如果您运行两次,所有数字都会被捕获:

Alejandra:~$cat tmp.txt 
-12-14-7-8-2-13-1-5-3-4-7-
Alejandra:~$sed "s/-\([0-9]\)-/-0\1-/g" tmp.txt | sed "s/-\([0-9]\)-/-0\1-/g"
-12-14-07-08-02-13-01-05-03-04-07-
于 2012-10-26T21:35:17.950 回答