Java regex 和 sed 不一样......?
获取这些字符串:
00543515703528
00582124628575
0034911320020
0034911320020
005217721320739
0902345623
067913187056
00543515703528
在java中应用这个exp:^(06700|067|00)([0-9]*)
。
我的目的是从字符串的开头删除前导“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。
Get these strings:
00543515703528
00582124628575
0034911320020
0034911320020
005217721320739
0902345623
067913187056
00543515703528
Apply this exp in java: ^(06700|067|00)([0-9]*)
.
My intention is to remove leading "06700, 067 and 00" from the beggining of the string.
It is all cool in java, group 2 always have the number I intend to, but in sed
it isnt the same:
$ cat strings|sed -e 's/^\(06700|067|00\)\([0-9]*\)/\2/g'
00543515703528
00582124628575
0034911320020
0034911320020
005217721320739
0902345623
067913187056
00543515703528
What the heck am I missing?
Cheers,
f.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用扩展正则表达式时,还需要省略
(
和)
之前的\
。这对我有用:另请注意,不需要单独调用
cat
When using extended regular expressions, you also need to omit the
\
before(
and)
. This works for me:note also that there's no need for a separate call to
cat
我相信你的问题是这样的:
源
如果没有此标志, |字符按字面解释。试试这个例子:
I believe your problem is this:
Source
Without this flag, the | character is interpreted literally. Try this example: