Как захватить любой символ с помощью регулярных выражений - PullRequest
3 голосов
/ 05 марта 2010

Я хочу захватить текст в атрибуте внутри тега XML. Это

<tag1 name="tag^*&,+">

Я хочу зафиксировать значение в атрибуте имени (которое в этом случае будет tag^*&,+). Это регулярное выражение

name=\"([a-z0-9]+)\"  

вернет значение только в том случае, если текст в атрибуте буквенно-цифровой. Есть ли синтаксис, который будет возвращать захваченное значение независимо от того, какой символ и символы? Спасибо!

Ответы [ 5 ]

6 голосов
/ 05 марта 2010

Опасаясь избить мертвую лошадь, не пытайтесь "анализировать" XML с помощью регулярных выражений. Используйте библиотеку XML вашего языка программирования. Тогда очень просто выбрать все элементы tag1 и получить содержимое их атрибутов name.

Вам не только легче кодировать, но вам не придется иметь дело с такими неприятными вещами, как строки, занимающие несколько строк, экранирование строк (например, &quot;), странные крайние случаи, которые приводят к сбою регулярного выражения и т. Д. .

1 голос
/ 05 марта 2010

Кажется, вам лучше использовать XML Parser Я не знаю, какой язык вы используете, но есть XML-анализатор для каждого языка.

1 голос
/ 05 марта 2010

Выезд регулярные выражения.инфо

Это будет делать то, что вы хотите:

([^"]+)
1 голос
/ 05 марта 2010

Вы должны использовать:

name=\"([^\"]+)\"

Другими словами, группа захвата может быть описана как, по крайней мере, один из «любого символа, отличного от заключительной цитаты»

0 голосов
/ 05 марта 2010

. будет соответствовать любому символу.

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