Подтвердить что ты не робот

Regex для обнаружения одного и того же символа более пяти раз?

Я пытаюсь выяснить, как написать регулярное выражение, которое может обнаружить, если в моей строке любой символ повторяется более пяти раз подряд? Например, он не обнаружил бы "привет", но обнаружил бы "helloooooooooo".

Любые идеи?

Изменить. Извините, чтобы уточнить, мне нужно, чтобы он обнаружил тот же символ, который повторялся более пяти раз, а не последовательность из пяти символов. И мне также нужно, чтобы он работал с любым уставом, а не просто "о", как в моем примере. ". {5,}" не является хорошим, потому что он просто обнаруживает любую последовательность из пяти символов, а не одного и того же символа.

4b9b3361

Ответ 1

Это должно сделать это

(\w)\1{5,}
  • (\w) сопоставить любой символ и поместить его в первую группу
  • \1{5,} убедитесь, что первая группа соответствует не менее 5 раз.

Использование:

$input = 'helloooooooooo';
if (preg_match('/(\w)\1{5,}/', $input)) {
 # Successful match
} else {
 # Match attempt failed
}

Ответ 2

Исправление, должно быть (.)\1{5,}, я считаю. Виноват. Это позволит вам:

(.)  #Any character
\1   #The character captured by (.)
{5,} #At least 5 more repetitions (total of at least 6)

Вы также можете ограничить его письмами с помощью (\w)\1{5,} или ([a-zA-Z])\1{5,}

Ответ 3

Да.

(.)\1+

Это будет соответствовать повторяющимся последовательностям любого символа.

\1 смотрит содержимое первого набора скобок. (поэтому, если у вас более сложное регулярное выражение, вам нужно будет отрегулировать его до нужного числа, чтобы он подбирал правильный набор скобок).

Если вам нужно указать, скажем, более трех из них:

(.)\1{3,}

Синтаксис\1 достаточно мощный - например, вы также можете использовать его в другом месте вашего регулярного выражения для поиска того же символа, который появляется в разных местах в вашей строке поиска.

Ответ 4

Вы можете использовать регулярное выражение:

(.)\1{5,}

Пояснение:

  • .: Meta char, который соответствует любому char.
  • (): используются для группировки и помня о единственном char.
  • \1: обратная ссылка на сингл char, который был запомнен в предыдущем шаг.
  • {5,}: Квантификатор для 5 или более

и в PHP вы можете использовать его как:

$input = 'helloooooooooo';
if(preg_match('/(.)\1{5,}/',$input,$matches)) {
  echo "Found repeating char $matches[1] in $input";
}

Вывод:

Found repeating char o in helloooooooooo