这是我的正则表达式代码
(?i)\s*src\s*=\s*(?:"[^"]*(?<!\.css|\.ico)"|'[^']*(?<!\.css|\.ico)'|[^'">\s]+(?<!\.css|\.ico))
我想获取src="内部的所有值,然后将其更改为业务内容。。像这样的。。
Pattern src = Pattern.compile(HTML_IMG_SRC);
Matcher srcM = src.matcher(getNewLine());
setNewLine(srcM.replaceAll(" src="images"));
src内部的值是。。。src="../images"我想省略../
因此您希望将src="../images...
替换为src="images...
。这就是你可以做到的:
String str = "asdf='jkl' src="../images/example.jpg" asrc='../images/as' src='../images/example.png'";
System.out.println(str.replaceAll("(\ssrc=['"])../(images)", "$1$2"));
说明:
\ssrc
将确保确实检查src属性,因为它以空白开始。即asrc属性将被省略。- 您需要两个反斜杠,因此一个反斜杠会替换另一个,因此生成的正则表达式将是
ssrc
- 您需要两个反斜杠,因此一个反斜杠会替换另一个,因此生成的正则表达式将是
- 字符类
['"]
确保可以同时匹配src="..."
和src='...'
- 您需要转义双引号以使java字符串有效。您的正则表达式将为
['"]
- 您需要转义双引号以使java字符串有效。您的正则表达式将为
- 你需要括号来捕捉你在字符串中找到的确切引号。然后我们用后引用
$1
和$2
来引用它们 - 运行此正则表达式最简单的java代码是
String.replaceAll
。它与通常的replace
类似,只是它将字符串计算为正则表达式 - 此代码不会检查src是否为实际图像,如
.png
或.jpg
。也有一些技巧可以做到这一点
因此,如果您的getNewLine()返回例如'blah src="../images"blah',您希望得到'blah src="images"blah',对吗?