我现在在Java上的正则表达式有问题。
我有这样的字符串:
img border="0" src="http://www.stackoverflow.com http://nbsp;https://<
并希望创建一个正则表达式,只找到两个"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