Java: RegEx, чтобы найти коллекцию подстрок - PullRequest
0 голосов
/ 18 февраля 2019

Я использую нижеприведенную 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);
    }

Regex : я использовал String patternStr="(\\/.*?\\.js)";

Ожидаемый результат : и fbevents.js, и fbevents2.js должны быть сопоставлены, и часть результата

Фактический результат : сопоставлен только fbevents.js

1 Ответ

0 голосов
/ 18 февраля 2019

Вы можете получить все свои результаты, используя цикл 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 и regex demo .

Шаблон [^/]*\.js соответствует любым 0+ символам, кроме /[^/]*), а затем подстроке .js.

...