Регулярное выражение для сопоставления, если текст содержит только один тип букв, например “KKKK”

#regex

#регулярное выражение

Вопрос:

Как я могу написать регулярное выражение, которое соответствует, если текст имеет только один тип буквы? Пример: «KKKKK», «AAAAA», «BBBB», «CCCC»

Комментарии:

1. Какой язык / инструмент вы используете? Поддерживает ли он обратные ссылки в регулярном выражении?

2. /^([a-zA-Z])1*$/ … для сопоставления слов установите границу слова /b([a-zA-Z])1*b/

3. якоря забыты.

Ответ №1:

Вы можете сделать это с помощью групп и обратных ссылок.

Мои примеры приведены в диалоге регулярных выражений Java, но вы можете адаптировать его к любому диалекту, который поддерживает обратные ссылки. Например, некоторые движки нуждаются (...) вместо (...) .

Сначала вам нужна группа, которую вы обозначаете, заключая в круглые скобки:

 (.)
 

Это соответствует любому отдельному символу. Если вы хотите, чтобы это были буквы в верхнем регистре, вы могли бы использовать (A-Z) вместо этого.

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

 (.)1
 

Это будет соответствовать AA или BB , но нет AB . И нет A , поскольку второй символ является обязательным.

Далее вам нужно указать, что второй символ встречается любое количество раз, включая ноль. С этим покончено * .

 (.)1*
 

Это соответствует A , B , AA , BB , , AAA , BBBBBBB но не AB или AAB .

В Java это должно быть экранировано:

  Pattern pattern = Pattern.compile("(.)\1*");
 

Ваш движок регулярных выражений может:
— используйте это для поиска во входной строке части, которая соответствует (так BAAAAB соответствует — находит AAAA )
— или может потребоваться, чтобы вся строка соответствовала шаблону (поэтому BAAAAB не совпадает).

Если вам нужно второе поведение от движка, который выполняет первое, добавьте .* любую сторону шаблона.

Если вам нужно первое поведение от движка, который выполняет второе, добавьте ^ в начале и $ в конце шаблона, они соответствуют началу и концу строки соответственно.