我正在寻找一种在整数和连字符字符串中添加任何单个数字的方法。例如
“-0-2-3---12-0---10-”变为“-00-02-03---12-00---10-”
或者
“-12-14-7-8-”变成“-12-13-07-08-”
我试过使用 \d{1} 和破折号的组合,但它似乎没有捕获所有正确的部分。任何帮助将不胜感激。如果正则表达式太复杂而无法做到这一点,请碰巧编写某种遍历器。
谢谢
我正在寻找一种在整数和连字符字符串中添加任何单个数字的方法。例如
“-0-2-3---12-0---10-”变为“-00-02-03---12-00---10-”
或者
“-12-14-7-8-”变成“-12-13-07-08-”
我试过使用 \d{1} 和破折号的组合,但它似乎没有捕获所有正确的部分。任何帮助将不胜感激。如果正则表达式太复杂而无法做到这一点,请碰巧编写某种遍历器。
谢谢
如果正则表达式引擎支持环视断言,那么这是一种方法:
s/(?<!\d)(?=\d(?!\d))/0/g
如果正则表达式引擎不支持后向断言(例如 JavaScript),则:
s/(^|[^\d])(?=\d(!\d))/$10/g
如果正则表达式引擎根本不支持环视断言,那么:
s/(^|[^\d])(\d)([^\d])/$10$2$3/g
我会使用类似的东西
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-