Регулярное выражение для соответствия любому символу повторяется более 10 раз


Я ищу простое регулярное выражение, чтобы соответствовать тот же символ повторяется более 10 раз. Так, например, если у меня есть документ, заваленный горизонтальными линиями:

=================================================

он будет соответствовать линии = символы, потому что он повторяется более 10 раз. Примечание что я хотел бы, чтобы это работало для любой символ.

9 70

9 ответов:

регулярное выражение вам нужно, это /(.){9,}/.

на - Это называется обратной ссылкой. Он ссылается на то, что захвачено точкой . между скобками (.) а то {9,} запрашивает девять или более одинаковых символов. Таким образом, это соответствует десяти или более из любого одного символа.

хотя приведенный выше тестовый скрипт находится в Perl, это очень стандартный синтаксис регулярных выражений и должен работать на любом языке. В некоторых вариантах вы можете нужно использовать больше обратных косых черт, например Emacs заставит вас писать \(.\)\{9,\} здесь.

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

my $regex = qr/^(.){9,}$/;

в Python вы можете использовать (.){9,}

  • (.) делает группу из одного символа (любого символа)
  • \1{9,} соответствует девяти или более персонажей из 1-й группы

пример:

txt = """1. aaaaaaaaaaaaaaa
2. bb
3. cccccccccccccccccccc
4. dd
5. eeeeeeeeeeee"""
rx = re.compile(r'(.){9,}')
lines = txt.split('\n')
for line in lines:
    rxx = rx.search(line)
    if rxx:
        print line

выход:

1. aaaaaaaaaaaaaaa
3. cccccccccccccccccccc
5. eeeeeeeeeeee

. соответствует любому символу. Используется в сочетании с уже упомянутыми фигурными скобками:

$: cat > test
========
============================
oo
ooooooooooooooooooooooo


$: grep -E '(.){10}' test
============================
ooooooooooooooooooooooo

используйте оператор {10,}:

$: cat > testre
============================
==
==============

$: grep -E '={10,}' testre
============================
==============

вы также можете использовать PowerShell для быстрой замены слов или характер рептилий. PowerShell-это для Windows. Текущая версия 3.0.

$oldfile = "$env:windir\WindowsUpdate.log"

$newfile = "$env:temp\newfile.txt"
$text = (Get-Content -Path $oldfile -ReadCount 0) -join "`n"

$text -replace '/(.){9,}/', ' ' | Set-Content -Path $newfile

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

/(.){9,}/

или такой:

(.){9,}

PHP preg_replace пример:

$str = "motttherbb fffaaattther";
$str = preg_replace("/([a-z])\1/", "", $str);
echo $str;

здесь [a-z] просмотров персонажа, () затем позволяет использовать его с \1 backreference, который пытается соответствовать другому такому же символу (обратите внимание, что это уже нацелено на 2 последовательных символа), таким образом:

мать отец

если ты:

$str = preg_replace("/([a-z])\1{2}/", "", $str);

это будет стирать 3 последовательных повторяющихся символа, выводя:

moherbb ее

={10,}

игр = это повторяется 10 или более раз.

похоже, что вам нужно регулярное выражение: 8= * D

grep -E "8=*D" sampletext