Я пытаюсь использовать регулярные выражения в Java для соответствия всей строке формы <b><number></b>
, которые содержатся в паре <a><\a>
.RegEx - сопоставить несколько пар тегов в родительском теге
например. <a> kljsdlk <b>123</b> df <b>345</b> sdfklj</a>
должен совпадать дважды с <b>123</b>
и <b>345</b>
, а <v> kljsdlk <b>123</b> df <b>345</b> sdfklj</v>
не должен иметь никаких результатов (потому что нет обертывания <a></a>
).
Следующий код мой текущий лучший результат:
Pattern MY_PATTERN = Pattern.compile("(<a>.*(<b>[0-9]*<\\\\b>)?.*<\\\\a>)");
Matcher m = MY_PATTERN.matcher("<a> skdjlkasjflkj <b>200<\\b> sldfhjhfj d lkj b <b>300<\\b> fhih 9 09 <\\a>");
while (m.find()) {
for (int i=0; i< m.groupCount() ;i++){
String s = m.group(i);
System.out.println(s);
}
}
Этот код результата с:
<a> skdjlkasjflkj <b>200<\b> sldfhjhfj d lkj b <b>300<\b> fhih 9 09 <\a>
<a> skdjlkasjflkj <b>200<\b> sldfhjhfj d lkj b <b>300<\b> fhih 9 09 <\a>
Я хотел бы, чтобы в результате:
<b>200<\b>
<b>300<\b>
Не следует смешивать регулярное выражение с HTML. – hsz
[Не пытайтесь анализировать HTML с регулярным выражением] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) – Buggabill
@StefanBeike - этот вопрос был - спросил очень много раз. Существуют чрезвычайно ограниченные случаи, когда разбор разметки с регулярным выражением может быть приемлемым. Тем не менее, вы играете с огнем. Одно из моих голосов было моим, и мои комментарии ссылаются на объяснение, которое использовалось здесь много-много раз. Лучше использовать любое количество доступных библиотек для выполнения обязанностей. – Buggabill