теги в строке - PullRequest
       20

теги в строке

2 голосов
/ 30 июня 2011

У меня есть следующее регулярное выражение (<.*?>.*?</.*?>|[\w[-]]+)\p{Punct}*, которое идеально подходит для большинства строк с тегами, но если тегу не предшествует пробел, он разрывает тег при поиске соответствия.

Пожалуйста, помогите мне изменить это регулярное выражение так, чтобы оно не нарушало теги. Все, что я ищу, это разделить пробелы, но не если пробел находится внутри тега.

Например:

BIRD-<abc attr="co_1">ab</span> @apos;<abc attr="co_12">cd</span>FEE DEF

следует разделить на:

BIRD-&ltabc attr="co_1">ab</span> 
@apos;<abc attr="co_12">cd</span>FEE  
DEF

В настоящее время я использую средство сопоставления для сопоставления с этим шаблоном и получения токенов

Matcher matcher = REGEX.matcher(newString);

while (matcher.find()) 
{
    token = matcher.group();
}

Ответы [ 2 ]

0 голосов
/ 05 августа 2011

Я бы с осторожностью выполнял этот тип анализа с помощью регулярных выражений. Шаблон, который вы предлагаете, а также различные его адаптации могут начать вести себя странно, если атрибуты содержат символы> и / или <. В следующем примере, например, будет сброшен ваш шаблон. </p>

<element attr="></>">value</element>

В любое время, когда вам нужно проанализировать или обработать файл XML, я бы посоветовал вам рассмотреть вопрос об использовании правильного анализатора XML. Пожалуйста, смотрите этот ответ для более подробного объяснения.

0 голосов
/ 06 июля 2011

Попробуйте:

.*?<.*?>.*?</.*?>[^\s]*

Это даст ожидаемый результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...