【发布时间】:2014-01-27 13:08:01
【问题描述】:
如何从任何 ipv6 地址中删除前导零。
String resultString = subjectString.replaceAll("((?::0\\b){2,}):?(?!\\S*\\b\\1:0\\b)(\\S*)", "::$2");
它正在压缩成这种形式。
2001:0DB8:0:0:0476:: --> 2001:0DB8::0476::
但它应该删除前导零,例如:
2001:DB8::476::
我需要在上面的正则表达式中更改什么?
【问题讨论】:
-
你需要 2001:DB8:::476:: 还是 2001:DB8::0476:: ?
-
我需要 2001:DB8::476:: ,前导零应该从任何地方删除!!
-
如果去掉前导零,结果是 2001:DB8:::476:: ,对吧?
-
是的,但是使用这个正则表达式它不起作用。该怎么做?
-
@Sujith For 2001:0db8:0:0000:00:000:0002:0000 --->2001:db8:::::2: 这不是有效的 ipv6 地址。它应该是 2001:db8::2:0:0。只有第一个分组的零不需要全部删除,您的正则表达式正在删除所有零并替换为“:”。前导零工作正常。
标签: java regex regex-negation