Ich suche nach einem einfachen regulären Ausdruck, der dem gleichen Zeichen entspricht, das mehr als 10 Mal wiederholt wird. Wenn ich zum Beispiel ein Dokument mit horizontalen Linien habe:
=================================================
Es stimmt mit der Zeichenzeile überein, =
da es mehr als 10 Mal wiederholt wird. Beachten Sie, dass dies für jeden Charakter funktionieren soll .
Antworten:
Die Regex, die Sie brauchen, ist
/(.)\1{9,}/
.Prüfung:
Hier
\1
wird das eine Rückreferenz genannt. Es verweist darauf, was durch den Punkt.
zwischen den Klammern erfasst wird,(.)
und{9,}
fragt dann nach neun oder mehr gleichen Zeichens. Dies entspricht also zehn oder mehr einzelnen Zeichen.Obwohl sich das obige Testskript in Perl befindet, ist dies eine Standard-Regex-Syntax und sollte in jeder Sprache funktionieren. In einigen Varianten müssen Sie möglicherweise mehr Backslashes verwenden, z. B. würde Emacs Sie dazu bringen,
\(.\)\1\{9,\}
hier zu schreiben .Wenn eine ganze Zeichenfolge aus 9 oder mehr identischen Zeichen bestehen soll, fügen Sie Anker um das Muster hinzu:
quelle
In Python können Sie verwenden
(.)\1{9,}
Beispiel:
Ausgabe:
quelle
.
passt zu einem beliebigen Zeichen. Wird in Verbindung mit den bereits erwähnten geschweiften Klammern verwendet:quelle
grep -E '([=o])\1{10}' test
undgrep -E '([=o]){10}' test
funktioniert gut mit Ihrem Beispiel ( man beachte das Fehlen\1
im zweiten Befehl). Aber der Befehlgrep -E '([=o])\1{10}' <<< '==o==o==o==o==o==o===o==o==='
stimmt nicht mit der Zeile überein! Der Befehl ohne\1
stimmt jedoch mit der Zeile überein :grep -E '([=o]){10}' <<< '==o==o==o==o==o==o===o==o==='
. Könnten Sie bitte erklären? Prost;)Bei einigen Apps müssen Sie die Schrägstriche entfernen, damit es funktioniert.
oder dieses:
quelle
Verwenden Sie den Operator {10,}:
quelle
Sie können PowerShell auch verwenden , um Wörter oder Zeichenreptionen schnell zu ersetzen . PowerShell ist für Windows. Aktuelle Version ist 3.0.
quelle
PHP-
preg_replace
Beispiel:Hier
[a-z]
trifft das Zeichen und()
ermöglicht dann die Verwendung mit\\1
Rückreferenz, die versucht, mit einem anderen gleichen Zeichen übereinzustimmen (dies zielt bereits auf 2 aufeinanderfolgende Zeichen ab), also:Wenn du. .. getan hast:
das würde 3 aufeinanderfolgende wiederholte Zeichen löschen und Folgendes ausgeben:
quelle
Übereinstimmungen
=
, die 10 oder mehr Mal wiederholt werden.quelle
perl -e 'print "NO" if "abcdefghijklmno" =~ /.{10,}/;'
Ein etwas allgemeineres Powershell-Beispiel. In Powershell 7 wird die Übereinstimmung einschließlich des letzten Leerzeichens hervorgehoben (können Sie sie im Stapel hervorheben?).
quelle