In diesem speziellen Fall würde ^\d*$
funktionieren, aber im Allgemeinen, um pattern
oder eine leere Zeichenfolge zu finden, können Sie Folgendes verwenden:
^
und $
sind der Anfang bzw. das Ende der String-Anker. |
wird verwendet, um Alternativen, z. this|that
. Im sogenannten Multiline-Modus ( Pattern.MULTILINE/(?m)
in Java), passen die ^
und $
stattdessen auf den Anfang und das Ende der Zeile . Die Anker für den Anfang und das Ende des Strings sind nun \A
bzw. \Z
.
Wenn Sie sich im mehrzeiligen Modus befinden, wird die leere Zeichenfolge stattdessen mit \A\Z
verglichen. ^$
würde einer leeren Zeile in der Zeichenfolge entsprechen.
Hier sind einige Beispiele, um die obigen Punkte zu veranschaulichen:
%Vor%matches
In Java versucht matches
, ein Muster mit der gesamten Zeichenfolge abzugleichen.
Dies gilt für String.matches
, Pattern.matches
und %Co_de% .
Dies bedeutet, dass manchmal Anker für Java Matcher.matches
weggelassen werden können, wenn sie sonst für andere Flavors und / oder andere Java-Regex-Methoden notwendig sind.
Entspricht 0 oder mehr Ziffern mit nichts davor oder danach.
Erläuterung:
Das '^' bedeutet Start der Linie. '$' bedeutet Ende der Zeile. '*' entspricht 0 oder mehr Vorkommen. Das Muster entspricht also einer ganzen Zeile mit 0 oder mehr Ziffern.
Um die leere Zeichenfolge explizit anzupassen, verwenden Sie \A\Z
.
Sie können oft auch ^$
sehen, was gut funktioniert, es sei denn, die Option ^
und $
wird nicht nur am Anfang oder am Ende der Zeichenfolge, sondern auch am Anfang / Ende von gesetzt jede Zeile. Wenn Ihre Eingabe niemals Zeilenumbrüche enthalten kann, dann ist ^$
natürlich vollkommen in Ordnung.
Einige Regex-Varianten unterstützen \A
und \Z
-Anker (insbesondere JavaScript) nicht.
Wenn Sie "leer" wie in "nichts oder nur Leerzeichen" zulassen wollen, dann gehen Sie für \A\s*\Z
oder ^\s*$
.
Eine der Möglichkeiten, auf der regulären Sprache als die Schließung der folgenden Dinge zu betrachten:
Konkrete Sprache ist konkretes Element dieser Schließung.
Ich habe kein leeres Symbol im POSIX-Standard gefunden, um eine normale Sprachidee auszudrücken aus Schritt (1).
Aber es gibt eine zusätzliche Sache wie das Fragezeichen dort, das durch die Posix-Definition folgendermaßen aussieht:
(Regexp | & lt; EMPTY_STRING & gt;)
So können Sie für bash, perl und python folgendermaßen vorgehen:
%Vor%Um ein beliebiges Muster, das einer ganzen Zeichenfolge entspricht, zu erstellen, d. h. einem Muster, das einer leeren Zeichenfolge entspricht, zu erlauben, verwenden Sie eine optionale Gruppe :
%Vor%Weitere Informationen finden Sie in der Regex-Demo
Wenn die Regex-Engine (wie in Java) zulässt, bevorzugen Sie eine nicht-einfangende Gruppe, da ihr Hauptzweck nur darin besteht, Untermuster zu gruppieren und die aufgezeichneten Unterwerte nicht beizubehalten:
%Vor% Der ^
stimmt mit dem Anfang einer Zeichenkette überein (oder \A
kann in vielen Varianten dafür verwendet werden), $
wird mit dem Ende der Zeichenkette übereinstimmen (oder \z
kann verwendet werden, um die sehr genaue Übereinstimmung zu ermitteln enden in vielen Varianten, und auch Java, und die (....)?
wird 1 oder 0 (aufgrund der ?
quantifier) Sequenzen der Unterpattern in Klammern entsprechen.
Ein Java-Verwendungshinweis: Wenn in matches()
verwendet, kann der anfängliche ^
und der nachlaufende $
weggelassen werden und Sie können