как проверить, содержит ли строка буквенные символы, по крайней мере, n раз подряд - PullRequest
0 голосов
/ 16 декабря 2009

Я проверяю строку, если она содержит хотя бы n символов в последовательном порядке:

У меня есть это регулярное выражение, но, похоже, оно не работает

(\w\1){3,}

Ответы [ 2 ]

3 голосов
/ 16 декабря 2009

(\w)\1{3,} Это гарантирует, что ваш персонаж будет повторяться как минимум четыре раза.

Проблема с (\w\1) заключается в том, что обратная ссылка \1 находится внутри самой группы захвата. \1 относится к символу (ам), которому соответствует первая группа () в скобках.

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

((\w)\2{3,})

Обратите внимание, что здесь индекс обратной ссылки равен \2, поскольку \1 относится к внешним скобкам.

Проверьте пример:

Regex      : ((\w)\2{3,})
TestString : bbaaaaaacc
Match      : aaaaaa
$1         : aaaaaa
$2         : a
2 голосов
/ 16 декабря 2009

Вы ищете n одного и того же символа или просто n символов?

(\w)\1{2,} находит один символ, а затем еще два одинаковых. Так что это будет совпадать, если у вас есть 3 или более одинаковых последовательных порядка символов в строке.

(\w){3,} будет соответствовать 3 или более символам.

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