Как лучше написать это регулярное выражение? - PullRequest
0 голосов
/ 27 марта 2010

Я преобразую дочерние элементы XML в параметры элемента и у меня есть грязный скрипт регулярного выражения, который я использовал в Textmate. Я знаю, что точка (.) Не выполняет поиск новых строк, поэтому я решил ее разрешить.

Поиск

language="(.*)"
(.*)<education>(.*)(\n)?(.*)?(\n)?(.*)?(\n)?(.*)?</education>
(.*)<years>(.*)</years>
(.*)<grade>(.*)</grade>

Заменить

grade="$13" language="$1" years="$11">
        <education>$3$4$5$6$7$8$9</education>

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

Ответы [ 2 ]

2 голосов
/ 27 марта 2010

Используйте анализатор xml, не используйте regex для анализа xml.

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

Если внутри элемента <education> нет других тегов, я бы изменил эту часть на:

<education>([^<>]*)</education>

Если возможно, я бы использовал ту же технику везде, где вы используете .*. В случае атрибута language это будет выглядеть следующим образом:

language="([^"]*)"
...