使用正则表达式将 URI 中的 IP 地址替换为另一个 IP 地址

dro*_*son 6 java regex

String uri = "rtps://12.10.10.124/abc/12.10.22.10";
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用高效的正则表达式替换此 uri 中第一次出现的 IP 地址,例如“127.0.0.1”。
考虑到最后可能会在uri中引入带点的数字。正则表达式必须仅替换 URI 中第一次出现的任何 IP 地址。

输出将是:

uri = "rtps://127.0.0.1/abc/12.10.22.10";
Run Code Online (Sandbox Code Playgroud)

Nul*_*ion 3

String ipRegex = "\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}";
String uri2 = uri.replaceFirst(ipRegex, "127.0.0.1");
Run Code Online (Sandbox Code Playgroud)

这当然匹配任何 4 组由 3 个点分隔的 1-3 位数字(例如:999.999.999.999 将匹配),如果您想要仅匹配合法 IP 地址的内容,您可以选择:

String ipRegex = "((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)";
Run Code Online (Sandbox Code Playgroud)

但我个人认为这是矫枉过正了。