正则表达式替换并在第一个零之前添加连字符

时间:2018-05-18 14:36:05

标签: regex

输入1:RC000030034

替换1:RC-000030034

输入2:RC100003282

替换2:RC1-00003282

希望在字符串中的第一个0之前添加连字符。

  • 输入将始终包含11个字符。

  • 最终输出将始终为12个字符。

  • 连字符后面永远不会有字母字符。

2 个答案:

答案 0 :(得分:0)

基于此:"希望在字符串中的第一个0之前添加连字符。"

javascript中的示例:

> var re = /^([^0]*)0(.*)$/
> "RC000030034".replace(re,"$1-$2")
'RC-00030034'
bash中的

(echo + sed):

$ echo 'RC00030034' | sed -e 's/^\([^0]*\)0\(.*\)$/\1-\2/'
RC-0030034

答案 1 :(得分:0)

output = input.replace("0", "-0")

或您所用语言的同等代码

大多数语言都为字符串提供了某种替换方法。上面的例子在javascript中工作,它将'-0'替换为'0'的第一个出现。 在python中,有一个replace()重放所有次出现;在那里,您必须使用可选参数来指示最大数字:

output = input.replace("0", "-0", 1)

在perl中,您可以使用正则表达式:

$input =~ s/0/-0/;

将所有字符串放在一个文件中(每个字符串在一个单独的行上),您可以使用以下shell命令:

perl -ne 's/0/-0/; print' inputfile

现在,假设您的输入允许使用RC0A00001234这样的字符串,其中连字符应该在第二个0之前,在A之后(因为我们“连字符后面将不会有字母字符”)。 然后命令必须变为:

perl -ne 's/(0\d*)$/-$1/; print' inputfile