Нужна небольшая помощь по этому регулярному выражению - PullRequest
1 голос
/ 16 декабря 2010

У меня есть строка Java, которая выглядит следующим образом, на самом деле это тег XML:

"article-idref="527710" group="no" height="267" href="pc011018.pct" id="pc011018" idref="169419" print-rights="yes" product="wborc" rights="licensed" type="photo" width="322" "

Теперь я хочу удалить сегмент article-idref = "52770" с помощью регулярного выражения, я пришел к следующему:

trimedString.replaceAll("\\article-idref=.*?\"","");

но это, похоже, не работает, кто-нибудь может дать мне представление о том, где я ошибся в своем регулярном выражении? Мне нужно, чтобы это было представлено как строка в моем классе Java, так что, вероятно, HTMLParser здесь мне мало поможет. Заранее спасибо!

Ответы [ 3 ]

2 голосов
/ 16 декабря 2010

Попробуйте это:

trimedString.replaceAll("article-idref=\"[^\"]*\" *","");
1 голос
/ 16 декабря 2010

Я исправил регулярное выражение, добавив кавычки и границу слова (чтобы избежать ложных совпадений).Кроме того, если вы этого не сделали, не забудьте переназначить строку после замены:

trimmedString = trimmedString.replaceAll("\\barticle-idref=\".*?\"", "");

Посмотрите, как она работает на ideone .

Также, посколькуиз XML-документа может быть лучше использовать синтаксический анализатор XML для извлечения правильных атрибутов вместо регулярного выражения.Это потому, что XML - довольно сложный формат данных для правильного анализа.Пример в вашем вопросе достаточно прост.Однако регулярное выражение может нарушить более сложный случай, например, документ, содержащий комментарии XML.Это может быть проблемой, если вы читаете данные из ненадежного источника.

0 голосов
/ 16 декабря 2010

, если вы уверены, что article-idref всегда в начале, попробуйте это:

// removes everything from the beginning to the first whitespace
trimedString = trimedString.replaceFirst("^\\s","");

Обязательно присвойте результат trimedString снова, так как replace не обрабатывает саму строку, а возвращает другую.

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