正则表达式:获取 src= 的值 " " 个特殊字符



这是我的正则表达式代码

(?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字符串有效。您的正则表达式将为['"]
  • 你需要括号来捕捉你在字符串中找到的确切引号。然后我们用后引用$1$2来引用它们
  • 运行此正则表达式最简单的java代码是String.replaceAll。它与通常的replace类似,只是它将字符串计算为正则表达式
  • 此代码不会检查src是否为实际图像,如.png.jpg。也有一些技巧可以做到这一点

因此,如果您的getNewLine()返回例如'blah src="../images"blah',您希望得到'blah src="images"blah',对吗?

最新更新