Java:RegEx查找子字符串集合

时间:2019-02-17 22:22:08

标签: java regex substring

我正在使用下面的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

1 个答案:

答案 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 demoregex demo

[^/]*\.js模式与/以外的任何0+个字符(带有[^/]*)匹配,然后匹配一个.js子字符串。