Regex для соответствия тегам как <A>, <BB>, <CCC>, но не <ABC>

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

6
задан Bill the Lizard 21 September 2012 в 17:15
поделиться

1 ответ

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

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

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

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

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

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

Ссылки

8
ответ дан 16 December 2019 в 21:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: