Регулярно выражайте теги, такие как <A>, <BB>, <CCC>, но не <ABC> - PullRequest
6 голосов
/ 24 июня 2010

Мне нужно регулярное выражение для соответствия тегам, которые выглядят как <A>, <BB>, <CCC>, но не <ABC>, <aaa>, <>. поэтому тег должен состоять из одной и той же заглавной буквы, повторяется. Я пробовал <[A-Z]+>, но это не работает. конечно я могу написать что-то вроде <(A+|B+|C+|...)> и так далее, но мне интересно, есть ли более элегантное решение.

1 Ответ

8 голосов
/ 24 июня 2010

Вы можете использовать что-то вроде этого ( см. Это на rubular.com ):

<([A-Z])\1*>

При этом используется группа захвата и обратная ссылка.В основном:

  • Вы используете (pattern), чтобы "захватить" совпадение
  • Затем вы можете использовать \n в вашем паттерне, где n - номер группы, чтобы "вернуться назад "к тому, что соответствовала этой группе

Так в этом случае:

  • Группа 1 захватывает ([A-Z]), заглавную букву, следующую сразу за <
  • Затем мы видим, можем ли мы сопоставить \1*, т. Е. Ноль или более той же буквы

Ссылки

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