2013-06-21 2 views
0

Я получил текст, содержащий некоторые метки разметки. Например:Обработка меток разметки с помощью java regex

 
Jane and Jack <record>went</record> to <record>cinema</record>. 

Моя цель состоит в том, чтобы преобразовать это предложение:

Джейн и Джеку {пробел} до {пробел}.

Когда я использую следующие

text.replaceAll("<record>.*</record>", "{blank}"); 

я получаю "Джейн и Джеку {пробел}." вместо предложения выше.

Каков наилучший способ решения этой проблемы?

ответ

2

Это следует сделать это:

text.replaceAll("<record>.*?</record>", "{blank}"); 

Добавление ? делает матч «не жадный», так что он соответствует наименьшее количество элементов, а не всего.

Также обратите внимание, что обращение к этим типам замены лучше всего оставить в синтаксическом анализаторе XML, если только они не являются простыми заменами.

+1

+1 для упоминания того, что HTML/XML/SGML/и т. Д. НИКОГДА не следует разбираться с регулярным выражением. -1 для того, чтобы даже упомянуть, как это сделать. –

+0

Итак, я сетнул 0 голосов. Это работает. –