(Java/Regex)如何找到"http://",除了"src="http://"



我现在在Java上的正则表达式有问题。

我有这样的字符串:

img border="0" src="http://www.stackoverflow.com http://nbsp;https://&lt

并希望创建一个正则表达式,只找到两个"http://",除了"src=\"http://"将"http://"替换为其他内容。

String input = "border="0" src="http://www.stackoverflow.com http://";
String regexStr = "(?!src="http://).*$";
Pattern pattern = Pattern.compile(regexStr);
Matcher matcher = pattern.matcher(input);
if (matcher.matches())
  System.out.println("String " + input + " has the word src="http:// in it ");
else
  System.out.println("String " + input + " hasn't the word src="http:// in it ");

我正在搜索与此相关的内容,但还没有找到完美的答案。

如有任何评论,将不胜感激。谢谢。

你想要的正则表达式是

(?<!src=")http://

括号中的部分是"负向后看"。 这意味着前面没有src="

当然,当你用Java字符串文字编写它时,它必须是

"(?<!src=")http://"
您可以使用

以下正则表达式:

(?<!src=")http://(www.)?[-a-zA-Z0-9@:%._+~#=]{2,256}.[a-z]{2,6}b([-a-zA-Z0-9@:%_+.~#?&//=]*)

将匹配 URL 的众多正则表达式之一,如 中定义的什么是匹配 URL 的良好正则表达式?

输入:

border="0" src="http://www.stackoverflow.com 
123 http://abc123.com asg
123 http://uvw-avc132.be abc

比赛:

http://abc123.com 
http://uvw-avc132.be

演示:https://regex101.com/r/SOyEtd/2

如果只想获取http://,则仅使用:

(?<!src=")http://

演示:https://regex101.com/r/SOyEtd/4

嵌入在 Java 中:

    String input = "border="0" src="http://www.stackoverflow.com http://";
    String output=input.replaceAll("(?<!src=")http://","something else");
    System.out.println(output);

输出:

border="0" src="http://www.stackoverflow.com something else

相关内容

最新更新