java - 正则表达式删除任何 ipv6 地址的前导零

标签 java regex regex-negation

如何从任何 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:: 

我需要在上述正则表达式中更改什么?

最佳答案

我可以给你一个简单的解决方案:

String subjectString="2001:0DB8:0:0:0476::";
String resultString = subjectString.replaceAll("(:(0)*)|(^0+)",":");
System.out.println(resultString);

结果将是:

 2001:DB8:::476::

关于java - 正则表达式删除任何 ipv6 地址的前导零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21012485/

相关文章:

regex - 如何使用正则表达式突出显示搜索到的单词

java - Field 中原始 getter/setter 的目的是什么?

java - 使用 JNI 从 C++ 调用 JAVA 方法,无参数

java - 用于解析简单的基于文本的数据文件的正则表达式

javascript - 正则表达式在 URL 地址测试中失败

正则表达式从任何地方排除字符串,但匹配另一个表达式

regex - 正则表达式匹配不包含单词的行

java - 是否有简单的 Java Regex (*SKIP)(*F) 替代方案?

java - 调用方法和填充随机数组时出现问题

java - 如何在 Java 的 Play Framework 2.5.9 中启用 CORS