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