Я хочу найти все совпадения «code» в моей строке ввода (с GWT RegExp). Когда я вызываю метод «RegExp.exec (inputStr)» он возвращает только первый матч, даже когда я называю это несколько раз:GWT RegExp - несколько совпадений
String input = "ff <code>myCode</code> ff <code>myCode2</code> dd <code>myCode3</code>";
String patternStr = "<code[^>]*>(.+?)</code\\s*>";
// Compile and use regular expression
RegExp regExp = RegExp.compile(patternStr);
MatchResult matcher = regExp.exec(inputStr);
boolean matchFound = (matcher != null); // equivalent to regExp.test(inputStr);
if (matchFound) {
// Get all groups for this match
for (int i=0; i<matcher.getGroupCount(); i++) {
String groupStr = matcher.getGroup(i);
System.out.println(groupStr);
}
}
Как я могу получить все матчи?
Редактировать: Как и greedybuddha отметил: Регулярное выражение действительно не подходит для синтаксического анализа (X) HTML. Я попробовал JSOUP, и это намного более удобно, чем с регулярным выражением. Теперь мой код с jsoup выглядит так. Я переименовывать все теги кода и применять их в CSS-класс:
String input = "ff<code>myCode</code>ff<code>myCode2</code>";
Document doc = Jsoup.parse(input, "UTF-8");
Elements links = doc.select("code"); // a with href
for(Element link : links){
System.out.println(link.html());
link.tagName("pre");
link.addClass("prettify");
}
System.out.println(doc);
Спасибо, я переключился на JSOUP, и это намного удобнее! – jan