Я ищу простое регулярное выражение, которое соответствовало бы одному и тому же символу, повторяющемуся более 10 раз. Так, например, если у меня есть документ, усеянный горизонтальными линиями:
=================================================
Он будет соответствовать строке =
символов, потому что он повторяется более 10 раз. Обратите внимание, что я бы хотел, чтобы это работало для любого персонажа.
Ответы:
Вам нужно регулярное выражение
/(.)\1{9,}/
.Тест:
Здесь
\1
это называется обратной ссылкой. Он ссылается на то, что обозначено точкой.
между скобками,(.)
а затем{9,}
запрашивает девять или более одинаковых символов. Таким образом, это соответствует десяти или более любым одиночным символам.Хотя приведенный выше тестовый сценарий написан на Perl, это очень стандартный синтаксис регулярных выражений, который должен работать на любом языке. В некоторых вариантах вам может понадобиться использовать больше обратной косой черты, например, Emacs заставит вас написать
\(.\)\1\{9,\}
здесь.Если вся строка должна состоять из 9 или более одинаковых символов, добавьте якоря вокруг шаблона:
источник
В Python вы можете использовать
(.)\1{9,}
пример:
Вывод:
источник
.
соответствует любому символу. Используется вместе с уже упомянутыми фигурными скобками:источник
grep -E '([=o])\1{10}' test
иgrep -E '([=o]){10}' test
отлично работает с вашим примером (обратите внимание на отсутствие\1
во второй команде). Но командаgrep -E '([=o])\1{10}' <<< '==o==o==o==o==o==o===o==o==='
не соответствует строке! Однако команда без\1
спичек строки:grep -E '([=o]){10}' <<< '==o==o==o==o==o==o===o==o==='
. Не могли бы вы объяснить? Cheers;)В некоторых приложениях вам нужно удалить косые черты, чтобы они работали.
или это:
источник
используйте оператор {10,}:
источник
Вы также можете использовать PowerShell для быстрой замены слов или повторений символов. PowerShell предназначен для Windows. Текущая версия - 3.0.
источник
preg_replace
Пример PHP :Здесь
[a-z]
встречается символ, а()
затем он позволяет использовать его с\\1
обратной ссылкой, которая пытается сопоставить другой такой же символ (обратите внимание, что это уже нацелено на 2 последовательных символа), таким образом:Если вы сделали:
это будет стирать 3 последовательных повторяющихся символа, выводя:
источник
совпадений
=
, повторяющихся 10 или более раз.источник
perl -e 'print "NO" if "abcdefghijklmno" =~ /.{10,}/;'
Чуть более общий пример PowerShell. В PowerShell 7 совпадение выделяется, включая последний пробел (вы можете выделить в стеке?).
источник