Java 使用正则表达式替换URL?

Java 使用正则表达式替换URL?,java,regex,Java,Regex,我使用的是第三方数据服务,它允许输入Java正则表达式模式。我没有访问代码的权限。是否有一个正则表达式模式允许我在适当的位置修改字符串?我基本上是在一个网址,但需要替换为另一个地址的网址。例如,我将进入:http://10.12.344.211/someimage.png我想用另一个地址替换10.12.344.211 使用正则表达式是否存在某种类型的查找/替换?如果此IP地址是固定的,并且它是字符串的一部分,那么您可以使用类似的replace方法 String someData = "addre

我使用的是第三方数据服务,它允许输入Java正则表达式模式。我没有访问代码的权限。是否有一个正则表达式模式允许我在适当的位置修改字符串?我基本上是在一个网址,但需要替换为另一个地址的网址。例如,我将进入:
http://10.12.344.211/someimage.png
我想用另一个地址替换10.12.344.211


使用正则表达式是否存在某种类型的查找/替换?

如果此IP地址是固定的,并且它是字符串的一部分,那么您可以使用类似的
replace
方法

String someData = "address of this image is http://10.12.344.211/someimage.png";
System.out.println(someData);
someData=someData.replace("http://10.12.344.211", "http://127.0.0.1");
System.out.println(someData);
输出:

address of this image is http://10.12.344.211/someimage.png
address of this image is http://127.0.0.1/someimage.png
否则,您可以将replaceAll与http://(\\d{1,3}[.]){3}\\d{1,3}“一起用作正则表达式

  • \\d
    表示数字
    [0-9]
    范围
  • [.]
    表示点文字
  • {x}
    {min,max}
    表示出现的次数

    • 不幸的是,没有
      URL.setHost
      方法

      然而,您并不真正需要这里的正则表达式

      例如:

      try {
          URL firstUrl = new URL("http://10.12.344.211/someimage.png");
          URL newURL = new URL(
              // note the new String ends with "212"
              firstUrl.toString().replace(firstUrl.getHost(), "10.12.344.212")
          );
          System.out.println(newURL);
      
      }
      catch (MalformedURLException mue) {
          mue.printStackTrace();
      }
      
      输出:

      http://10.12.344.212/someimage.png
      

      这个IP地址是固定的还是可以更改的?如果它是固定的,那么就不需要正则表达式。1.没有“就地”替换,但是如果您的工具提供了两个参数-正则表达式和替换术语-那么它就可以完成。然而,看起来一个简单的非正则表达式替换将起作用。