Szukaj…


Dopasuj znak jednocyfrowy za pomocą [0-9] lub \ d (Java)

[0-9] i \d są wzorcami równoważnymi (chyba że silnik Regex jest zgodny z Unicode i \d również pasuje do rzeczy takich jak ②). Oba będą pasować do znaku jednocyfrowego, dzięki czemu można użyć dowolnej notacji, którą uważasz za bardziej czytelną.

Utwórz ciąg wzoru, który chcesz dopasować. Jeśli używasz notacji \ d, musisz dodać drugi ukośnik odwrotny, aby uciec przed pierwszym ukośnikiem.

String pattern = "\\d";

Utwórz obiekt Pattern. Przekaż ciąg wzorca do metody compile ().

Pattern p = Pattern.compile(pattern);

Utwórz obiekt Matcher. Przekaż ciąg, w którym chcesz znaleźć wzór, do metody matcher (). Sprawdź, czy wzór został znaleziony.

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

Dopasowywanie różnych liczb

[ab] gdzie aib są cyframi z zakresu od 0 do 9

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

Dopasowywanie wielu cyfr

\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

\d w powyższych przykładach można zastąpić zakresem liczb:

[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

Możesz także wybrać określone cyfry:

[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

Pasujące liczby w zakresach zawierających więcej niż jedną cyfrę:

\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

Pasujące liczby, które dzielą się przez inne liczby:

\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

pasujące liczby, które dzielą przez 4 - dowolna liczba, która jest 0, 4 lub 8 lub kończy się na 00, 04, 08, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60 , 64, 68, 72, 76, 80, 84, 88, 92 lub 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)

Można to skrócić. Na przykład zamiast 20|24|28 możemy użyć 2[048] . Ponadto, ponieważ lata 40., 60. i 80. mają ten sam wzór, możemy je uwzględnić: [02468][048] a inne również mają wzór [13579][26] . Tak więc całą sekwencję można zredukować do:

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

Dopasowywanie liczb, które nie mają wzoru podobnego do podzielnego przez 2,4,5,10 itd., Nie zawsze może być wykonane zwięźle i zwykle musisz uciekać się do szeregu liczb. Na przykład dopasowanie wszystkich liczb, które dzielą przez 7 w zakresie od 1 do 50, można zrobić w prosty sposób, podając wszystkie te liczby:

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

or you could do it this way

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

Dopasowywanie początkowych / końcowych białych znaków

Końcowe spacje

\s*$ : Dopasuje dowolne ( * ) białe znaki ( \s ) na końcu ( $ ) tekstu

Wiodące przestrzenie

^\s* : Dopasuje dowolne ( * ) białe znaki ( \s ) na początku ( ^ ) tekstu

Uwagi

\s jest powszechnym metaznakiem dla kilku silników RegExp i ma na celu przechwytywanie białych znaków (na przykład spacje, znaki nowej linii i tabulatory). Uwaga : prawdopodobnie nie przechwyci wszystkich znaków spacji unicode . Sprawdź dokumentację silników, aby się upewnić.

Dopasuj dowolny pływak

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

Będzie pasować do każdego podpisanego zmiennoprzecinkowego, jeśli nie chcesz znaków lub analizujesz równania, usuń [\+\-]? więc masz \d+(\.\d+)?

Wyjaśnienie:

  • \d+ pasuje do dowolnej liczby całkowitej
  • ()? oznacza, że zawartość nawiasów jest opcjonalna, ale zawsze musi pojawiać się razem
  • „\”. pasuje do „.”, musimy uciec przed tym, ponieważ „.” zwykle pasuje do dowolnej postaci

To wyrażenie będzie pasować

5
+5
-5
5.5
+5.5
-5.5

Wybieranie określonego wiersza z listy na podstawie słowa w określonej lokalizacji

Mam następującą listę:

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

Chcę wybrać imię facetów o nazwisku Yaron.

Ponieważ nie dbam o to, jaki to numer, po prostu wstawię go jako dowolną cyfrę oraz pasującą kropkę i spację po nim od początku wiersza, jak poniżej: ^[\d]+\.\s .

Teraz będziemy musieli dopasować spację i imię, ponieważ nie możemy stwierdzić, czy jest to [a-zA-Z]+\s czy mała litera, po prostu dopasujemy oba: [a-zA-Z]+\s lub [aZ]+\s i może być również [\w]+\s .

Teraz podamy wymagane nazwisko, aby uzyskać tylko wiersze zawierające nazwisko Yaron (na końcu wiersza): \sYaron$ .

Składając to wszystko razem ^[\d]+\.\s[\w]+\sYaron$ .

Przykład na żywo: https://regex101.com/r/nW4fH8/1



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow