Zoeken…


Overeenkomen met een ééncijferig teken met behulp van [0-9] of \ d (Java)

[0-9] en \d zijn gelijkwaardige patronen (tenzij uw Regex-engine unicode-bewust is en \d ook overeenkomt met dingen zoals ②). Ze komen beide overeen met een enkelcijferig teken, zodat u elke notatie kunt gebruiken die u beter leesbaar vindt.

Maak een string van het patroon dat u wilt matchen. Als u de notatie \ d gebruikt, moet u een tweede backslash toevoegen om aan de eerste backslash te ontsnappen.

String pattern = "\\d";

Maak een patroonobject. Geef de tekenreeks door aan de compile () -methode.

Pattern p = Pattern.compile(pattern);

Maak een Matcher-object. Geef de tekenreeks waarnaar u zoekt het patroon door aan de methode matcher (). Controleer of het patroon is gevonden.

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

Overeenkomende verschillende nummers

[ab] waarbij a en b cijfers zijn in het bereik 0 tot 9

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

Overeenkomen met meerdere cijfers

\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

De \d in de bovenstaande voorbeelden kunnen worden vervangen door een nummerbereik:

[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

U kunt ook specifieke cijfers selecteren:

[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

Overeenkomende nummers in bereiken die meer dan één cijfer bevatten:

\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

Overeenkomende nummers die delen door andere nummers:

\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

overeenkomende nummers die delen door 4 - elk nummer dat 0, 4 of 8 is of eindigt op 00, 04, 08, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60 , 64, 68, 72, 76, 80, 84, 88, 92 of 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)

Dit kan worden ingekort. In plaats van 20|24|28 , kunnen we bijvoorbeeld 2[048] . [02468][048] de jaren 40, 60 en 80 hetzelfde patroon hebben, kunnen we ze ook opnemen: [02468][048] en de anderen hebben ook een patroon [13579][26] . Dus de hele reeks kan worden teruggebracht tot:

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

Overeenkomende getallen die geen patroon hebben zoals deelbaar door 2,4,5,10 enz. Kunnen niet altijd kort en bondig worden gedaan en je moet meestal een reeks getallen gebruiken. U kunt bijvoorbeeld eenvoudig alle nummers vergelijken die door 7 binnen het bereik van 1 tot 50 delen door al die nummers te vermelden:

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

or you could do it this way

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

Overeenkomende voorloop / achterloop witruimte

Trailing spaties

\s*$ : dit komt overeen met elke ( * ) witruimte ( \s ) aan het einde ( $ ) van de tekst

Vooraanstaande spaties

^\s* : dit komt overeen met elke ( * ) witruimte ( \s ) aan het begin ( ^ ) van de tekst

Opmerkingen

\s is een gebruikelijk metateken voor verschillende RegExp-engines en is bedoeld om witruimte-tekens vast te leggen (spaties, nieuwe regels en tabbladen bijvoorbeeld). Opmerking : waarschijnlijk worden niet alle tekens van de Unicode-spatie vastgelegd. Raadpleeg de documentatie van uw motor om hier zeker van te zijn.

Overeenkomen met elke float

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

Dit komt overeen met elke ondertekende float, als je geen tekens wilt of een vergelijking analyseert [\+\-]? dus je hebt \d+(\.\d+)?

Uitleg:

  • \d+ overeen met elk geheel getal
  • ()? betekent dat de inhoud van de haakjes optioneel is, maar altijd samen moet verschijnen
  • '\'. komt overeen met '.', we moeten hieraan ontsnappen sinds '.' komt normaal overeen met elk karakter

Dus deze uitdrukking komt overeen

5
+5
-5
5.5
+5.5
-5.5

Een bepaalde regel uit een lijst selecteren op basis van een woord op een bepaalde locatie

Ik heb de volgende lijst:

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

Ik wil de voornaam van de jongens met de achternaam Yaron selecteren.

Omdat het me niet kan schelen welk nummer het is, zet ik het gewoon als een willekeurig cijfer en een bijpassende stip en spatie erachter vanaf het begin van de regel, zoals dit: ^[\d]+\.\s .

Nu moeten we overeenkomen met de spatie en de voornaam, omdat we niet weten of het hoofdletters of kleine letters zijn, we zullen beide overeenkomen: [a-zA-Z]+\s of [aZ]+\s en kan ook [\w]+\s .

Nu zullen we de vereiste achternaam opgeven om alleen de regels met Yaron als achternaam te krijgen (aan het einde van de regel): \sYaron$ .

Alles bij elkaar ^[\d]+\.\s[\w]+\sYaron$ .

Live voorbeeld: https://regex101.com/r/nW4fH8/1



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow