String uri = "rtps://12.10.10.124/abc/12.10.22.10";
我正在尝试使用高效的正则表达式替换此uri中的任何第一次出现的IP地址。让我们说“127.0.0.1”。
考虑到最后可以在uri中引入带点的数字。正则表达式必须只替换URI中第一次出现的任何IP地址。
输出将是:
uri = "rtps://127.0.0.1/abc/12.10.22.10";
答案 0 :(得分:2)
s/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/127\.0\.0\.1/
将字符串中第一次出现的ip地址转换为“127.0.0.1”
答案 1 :(得分:2)
String ipRegex = "\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}";
String uri2 = uri.replaceFirst(ipRegex, "127.0.0.1");
这当然匹配由3个点分隔的任意4组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]?)";
但我个人认为这太过分了。
答案 2 :(得分:0)
String uri = uri.replaceFirst("\\d+\\.\\d+\\.\\d+\\.\\d+", "127.0.0.1");
答案 3 :(得分:0)
在Java中,您可以使用URL
类来完成。
URI u = new URI(uri);
u = new URI(u.getScheme(), "127.0.0.1", u.getPath(), u.getFragment());
uri = u.toString();