Suche…


Ein einzelnes Zeichen mit [0-9] oder \ d (Java) abgleichen

[0-9] und \d sind äquivalente Muster (es sei denn, Ihre Regex-Engine ist Unicode-fähig und \d stimmt auch mit überein). Sie stimmen beide mit einem einstelligen Zeichen überein, sodass Sie die jeweils lesbarere Schreibweise verwenden können.

Erstellen Sie eine Zeichenfolge des Musters, das Sie zuordnen möchten. Wenn Sie die \ d-Notation verwenden, müssen Sie einen zweiten Backslash hinzufügen, um den ersten Backslash zu umgehen.

String pattern = "\\d";

Erstellen Sie ein Musterobjekt. Übergeben Sie die Musterzeichenfolge an die Methode compile ().

Pattern p = Pattern.compile(pattern);

Erstellen Sie ein Matcher-Objekt. Übergeben Sie die Zeichenfolge, die Sie suchen, um das Muster in der matcher () -Methode zu finden. Prüfen Sie, ob das Muster gefunden wurde.

Matcher m1 = p.matcher("0");
m1.matches(); //will return true

Matcher m2 = p.matcher("5");
m2.matches(); //will return true

Matcher m3 = p.matcher("12345");
m3.matches(); //will return false since your pattern is only for a single integer

Verschiedene Zahlen abgleichen

[ab] wobei a und b Ziffern im Bereich von 0 bis 9

[3-7] will match a single digit in the range 3 to 7.

Mehrere Ziffern übereinstimmen

\d\d       will match 2 consecutive digits
\d+        will match 1 or more consecutive digits
\d*        will match 0 or more consecutive digits
\d{3}      will match 3 consecutive digits
\d{3,6}    will match 3 to 6 consecutive digits
\d{3,}     will match 3 or more consecutive digits

Das \d in den obigen Beispielen kann durch einen Zahlenbereich ersetzt werden:

[3-7][3-7]    will match 2 consecutive digits that are in the range 3 to 7
[3-7]+        will match 1 or more consecutive digits that are in the range 3 to 7
[3-7]*        will match 0 or more consecutive digits that are in the range 3 to 7
[3-7]{3}      will match 3 consecutive digits that are in the range 3 to 7
[3-7]{3,6}    will match 3 to 6 consecutive digits that are in the range 3 to 7
[3-7]{3,}     will match 3 or more consecutive digits that are in the range 3 to 7

Sie können auch bestimmte Ziffern auswählen:

[13579]       will only match "odd" digits
[02468]       will only match "even" digits
1|3|5|7|9     another way of matching "odd" digits - the | symbol means OR

Übereinstimmende Zahlen in Bereichen, die mehr als eine Ziffer enthalten:

\d|10        matches 0 to 10    single digit OR 10.  The | symbol means OR
[1-9]|10     matches 1 to 10    digit in range 1 to 9 OR 10
[1-9]|1[0-5] matches 1 to 15    digit in range 1 to 9 OR 1 followed by digit 1 to 5
\d{1,2}|100  matches 0 to 100   one to two digits OR 100

Übereinstimmende Zahlen, die durch andere Zahlen geteilt werden:

\d*0         matches any number that divides by 10  - any number ending in 0
\d*00        matches any number that divides by 100 - any number ending in 00
\d*[05]      matches any number that divides by 5   - any number ending in 0 or 5
\d*[02468]   matches any number that divides by 2   - any number ending in 0,2,4,6 or 8

übereinstimmende Zahlen, die sich durch 4 teilen - jede Zahl, die 0, 4 oder 8 ist oder auf 00, 04, 08, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60 endet 64, 68, 72, 76, 80, 84, 88, 92 oder 96

[048]|\d*(00|04|08|12|16|20|24|28|32|36|40|44|48|52|56|60|64|68|72|76|80|84|88|92|96)

Dies kann verkürzt werden. Anstelle von 20|24|28 wir beispielsweise 2[048] . Da die 40er, 60er und 80er Jahre das gleiche Muster haben, können wir sie einschließen: [02468][048] und die anderen haben auch ein Muster [13579][26] . So kann die ganze Sequenz reduziert werden auf:

[048]|\d*([02468][048]|[13579][26])    - numbers divisible by 4

Übereinstimmende Zahlen, deren Muster nicht durch 2,4,5,10 teilbar ist, können nicht immer präzise ausgeführt werden. In der Regel müssen Sie auf eine Reihe von Zahlen zurückgreifen. Zum Beispiel kann das Vergleichen aller Zahlen, die durch 7 im Bereich von 1 bis 50 geteilt werden, einfach durch Auflisten aller Zahlen erfolgen:

7|14|21|28|35|42|49

or you could do it this way

7|14|2[18]|35|4[29]

Passender / nachstehender Leerraum

Nachgestellte Räume

\s*$ : Dies entspricht einem beliebigen ( * ) Whitespace ( \s ) am Ende ( $ ) des Texts

Führende Räume

^\s* : Dies entspricht einem beliebigen ( * ) Leerzeichen ( \s ) am Anfang ( ^ ) des Textes

Bemerkungen

\s ist ein allgemeines Metazeichen für mehrere RegExp-Engines und dient zum Erfassen von Leerzeichen (Leerzeichen, Zeilenumbrüche und Registerkarten). Hinweis : Wahrscheinlich werden nicht alle Unicode-Leerzeichen erfasst. Überprüfen Sie die Dokumentation Ihrer Motoren, um sich darüber sicher zu sein.

Passen Sie jeden Schwimmer an

[\+\-]?\d+(\.\d*)?

Dies wird mit jedem vorzeichenbehafteten Float übereinstimmen, wenn Sie keine Zeichen haben möchten oder eine Gleichung analysieren [\+\-]? entfernen [\+\-]? also hast du \d+(\.\d+)?

Erläuterung:

  • \d+ entspricht einer beliebigen Ganzzahl
  • ()? bedeutet, dass der Inhalt der Klammern optional ist, aber immer zusammen angezeigt werden muss
  • '\.' Stimmt mit '.' überein, müssen wir dem seit '.' entspricht normalerweise einem beliebigen Zeichen

Also wird dieser Ausdruck passen

5
+5
-5
5.5
+5.5
-5.5

Auswählen einer bestimmten Zeile aus einer Liste basierend auf einem Wort an einem bestimmten Ort

Ich habe folgende Liste:

1. Alon Cohen
2. Elad Yaron
3. Yaron Amrani
4. Yogev Yaron

Ich möchte den Vornamen der Jungs mit dem Nachnamen Yaron auswählen.

Da es mir egal ist, um welche Nummer es sich handelt, lege ich es einfach als Zeichen und einen passenden Punkt und Leerzeichen vom Anfang der Zeile an wie folgt: ^[\d]+\.\s .

Jetzt müssen wir das Leerzeichen und den Vornamen [a-zA-Z]+\s , da wir nicht erkennen können, ob es sich um [a-zA-Z]+\s oder Kleinbuchstaben handelt, wir passen nur zu beidem: [a-zA-Z]+\s oder [aZ]+\s und kann auch [\w]+\s .

Jetzt geben wir den erforderlichen Nachnamen an, um nur die Zeilen zu erhalten, die Yaron als Nachnamen enthalten (am Ende der Zeile): \sYaron$ .

Alles zusammen setzen ^[\d]+\.\s[\w]+\sYaron$ .

Live-Beispiel: https://regex101.com/r/nW4fH8/1



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow