(<link.*>)|(<img.*>)|(<input.*type=\"image\".*>)|(<script.*src=\".*\".*>)
我正在编写一个正则表达式,以便用HTML中的Base64数据URI(不相关)替换所有出现的内联静态内容。每个表达式都可以完美地独立工作,但是我需要按顺序获取它们,并且编写排序算法对于正在使用的数据有点疯狂(这已经很疯狂了)。我认为这应该工作,但是不匹配其中的第一个RegEx,但不匹配其他RegEx。您如何匹配任何表达式?
<link.*>
<img.*>
<input.*type=\"image\".*>
<script.*src=\".*\".*>
我的Java代码:
private final Pattern inlineLink = Pattern.compile("(<link.*>)|(<img.*>)|(<input.*type=\"image\".*>)|(<script.*src=\".*\".*>)", Pattern.CASE_INSENSITIVE);
Matcher mtch = inlineLink.matcher(html);
while (mtch.find()) {
String o = mtch.group();
if (!o.contains("href=")) continue;
String href = o.substring(o.indexOf("href=") + 5);
if (href.startsWith("\"")) {
href = href.substring(1, href.indexOf("\"", 1));
}else {
href = href.substring(0, href.indexOf(" "));
}
href = processHREF(href);
//do other stuffs
我建议将斜杠加倍,并在第一个捕获组中放置替代方案。
Pattern inlineLink = Pattern.compile("(<link.*>|<img.*>|<input.*type=\\\"image\\\".*>|<script.*src=\\\".*\\\".*>)", Pattern.CASE_INSENSITIVE);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句