我正在使用下面的java程序来查找js文件列表作为子字符串。
String str = "jsLib//connect.facebook.net/en_US/fbevents.js , jsLib//connect.facebook.net/en_US/fbevents2.js;";
String patternStr = "(\\/.*?\\.js)";
Pattern pattern = Pattern.compile(patternStr);
Matcher matcher = pattern.matcher(html);
if (matcher.find()) {
System.out.println("Count:" + matcher.groupCount());
jsLib = matcher.group(1);
jsLib = jsLib.substring(jsLib.lastIndexOf('/') + 1, jsLib.length());
System.out.println("jsLib:" + jsLib);
}
正则表达式:我使用了String patternStr="(\\/.*?\\.js)";
预期结果:fbevents.js和fbevents2.js都应该匹配,并且是结果的一部分
实际结果:仅匹配fbevents.js
答案 0 :(得分:3)
您可以使用while
循环和[^/]*\.js
这样的正则表达式来获得所有结果:
String str = "jsLib//connect.facebook.net/en_US/fbevents.js , jsLib//connect.facebook.net/en_US/fbevents2.js;";
String patternStr = "[^/]*\\.js";
Pattern pattern = Pattern.compile(patternStr);
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
System.out.println("jsLib:" + matcher.group());
}
输出:
jsLib:fbevents.js
jsLib:fbevents2.js
请参见Java demo和regex demo。
[^/]*\.js
模式与/
以外的任何0+个字符(带有[^/]*
)匹配,然后匹配一个.js
子字符串。