Regex Java正则表达式和sed aren';不一样吗。。。?
获取以下字符串:Regex Java正则表达式和sed aren';不一样吗。。。?,regex,string,sed,Regex,String,Sed,获取以下字符串: 00543515703528 00582124628575 0034911320020 0034911320020 005217721320739 0902345623 067913187056 00543515703528 在java中应用此exp:^(06700 | 067 | 00)([0-9]*) 我的意图是从字符串的beggining中删除前导“06700、067和00” java很酷,第2组总是有我想要的号码,但在sed中它不一样: $ cat strings|s
00543515703528
00582124628575
0034911320020
0034911320020
005217721320739
0902345623
067913187056
00543515703528
在java中应用此exp:^(06700 | 067 | 00)([0-9]*)
我的意图是从字符串的beggining中删除前导“06700、067和00”
java很酷,第2组总是有我想要的号码,但在sed
中它不一样:
$ cat strings|sed -e 's/^\(06700|067|00\)\([0-9]*\)/\2/g'
00543515703528
00582124628575
0034911320020
0034911320020
005217721320739
0902345623
067913187056
00543515703528
我到底错过了什么
干杯
f、 我相信你的问题在于: sed默认为BRE:默认值 sed的行为是支持基本的 正则表达式(BRE)。使用全部 本页介绍的功能 将-r(Linux)或-E(BSD)标志设置为 使用扩展正则表达式 如果没有此标志,|字符将按字面解释。试试这个例子:
echo "06700|067|0055555" | sed -e 's/^\(06700|067|00\)\([0-9]*\)/\2/g'
使用扩展正则表达式时,还需要在
(
和)
之前省略\
。这对我很有用:
sed -r 's/^(06700|067|00)([0-9]*)/\2/g' strings
还请注意,不需要单独调用cat