我有一个包含HTML内容的字符串,我需要获取 .css 和 .js 文件的所有链接。现在,我使用这种模式"(http:.*?.\\.css)"
来获取所有CSS链接,但我也可以包含.js链接?
这是我的完整代码:
List<String> urlList = new ArrayList<String>();
String str = new String(Files.readAllBytes(FileSystems.getDefault().getPath("c:" + File.separator + "nutchfiles" + File.separator + "test.html")));
Pattern p = Pattern.compile("(http:.*?.\\.css)");
Matcher m = p.matcher(str);
while (m.find()) {
LOG.info("matched urls" + m.group());
}
答案 0 :(得分:2)
如果您正在寻找正则表达式修复程序,请执行以下操作:
-3 is true
-2 is true
-1 is true
0 is false
更改将帮助您匹配两个扩展名。见Alternation with The Vertical Bar or Pipe Symbol:
如果您要搜索文字文本
Pattern p = Pattern.compile("(http:.*?\\.(?:css|js)\\b)");
或cat
,请使用竖线或竖线符号分隔这两个选项:dog
。如果您想要更多选项,只需展开列表:cat|dog
。
但是,使用HTML解析器可以更安全地从HTML文件中获取任何内容。