Java Gereelde Uitdrukkings


Wat is 'n gereelde uitdrukking?

'n Gereelde uitdrukking is 'n reeks karakters wat 'n soekpatroon vorm. Wanneer jy na data in 'n teks soek, kan jy hierdie soekpatroon gebruik om te beskryf waarna jy soek.

'n Gereelde uitdrukking kan 'n enkele karakter of 'n meer ingewikkelde patroon wees.

Gereelde uitdrukkings kan gebruik word om alle soorte tekssoektogte en teksvervangingsbewerkings uit te voer.

Java het nie 'n ingeboude Regular Expression-klas nie, maar ons kan die java.util.regex pakket invoer om met gewone uitdrukkings te werk. Die pakket sluit die volgende klasse in:

  • Pattern Klas - Definieer 'n patroon (om in 'n soektog gebruik te word)
  • Matcher Klas - Word gebruik om na die patroon te soek
  • PatternSyntaxException Klas - Dui sintaksfout in 'n gereelde uitdrukkingspatroon aan

Voorbeeld

Vind uit of daar enige voorkoms van die woord "w3schools" in 'n sin is:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
  public static void main(String[] args) {
    Pattern pattern = Pattern.compile("w3schools", Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher("Visit W3Schools!");
    boolean matchFound = matcher.find();
    if(matchFound) {
      System.out.println("Match found");
    } else {
      System.out.println("Match not found");
    }
  }
}
// Outputs Match found

Voorbeeld Verduidelik

In hierdie voorbeeld word daar na die woord "w3schools" in 'n sin gesoek.

Eerstens word die patroon met die Pattern.compile()metode geskep. Die eerste parameter dui aan na watter patroon gesoek word en die tweede parameter het 'n vlag om aan te dui dat die soektog hoofletter-onsensitief moet wees. Die tweede parameter is opsioneel.

Die matcher()metode word gebruik om die patroon in 'n string te soek. Dit gee 'n Matcher-objek terug wat inligting bevat oor die soektog wat uitgevoer is.

Die find()metode gee waar as die patroon in die string gevind is en vals as dit nie gevind is nie.



Vlae

Vlae in die compile()metode verander hoe die soektog uitgevoer word. Hier is 'n paar van hulle:

  • Pattern.CASE_INSENSITIVE - Die geval van briewe sal geïgnoreer word wanneer 'n soektog uitgevoer word.
  • Pattern.LITERAL - Spesiale karakters in die patroon sal geen spesiale betekenis hê nie en sal as gewone karakters behandel word wanneer 'n soektog uitgevoer word.
  • Pattern.UNICODE_CASE- Gebruik dit saam met die CASE_INSENSITIVEvlag om ook die hoofletters van letters buite die Engelse alfabet te ignoreer

Gereelde uitdrukkingspatrone

Die eerste parameter van die Pattern.compile()metode is die patroon. Dit beskryf waarna gesoek word.

Hakies word gebruik om 'n reeks karakters te vind:

Expression Description
[abc] Find one character from the options between the brackets
[^abc] Find one character NOT between the brackets
[0-9] Find one character from the range 0 to 9

Meta-karakters

Metakarakters is karakters met 'n spesiale betekenis:

Metacharacter Description
| Find a match for any one of the patterns separated by | as in: cat|dog|fish
. Find just one instance of any character
^ Finds a match as the beginning of a string as in: ^Hello
$ Finds a match at the end of the string as in: World$
\d Find a digit
\s Find a whitespace character
\b Find a match at the beginning of a word like this: \bWORD, or at the end of a word like this: WORD\b
\uxxxx Find the Unicode character specified by the hexadecimal number xxxx

Kwantifiseerders

Kwantifiseerders definieer hoeveelhede:

Quantifier Description
n+ Matches any string that contains at least one n
n* Matches any string that contains zero or more occurrences of n
n? Matches any string that contains zero or one occurrences of n
n{x} Matches any string that contains a sequence of X n's
n{x,y} Matches any string that contains a sequence of X to Y n's
n{x,} Matches any string that contains a sequence of at least X n's

Let wel: As jou uitdrukking vir een van die spesiale karakters moet soek, kan jy 'n terugskuinsstreep ( \ ) gebruik om hulle te ontsnap. In Java moet agterste skuinstekens in snare self ontsnap word, dus twee agterste skuins is nodig om spesiale karakters te ontsnap. Byvoorbeeld, om na een of meer vraagtekens te soek, kan jy die volgende uitdrukking gebruik: "\\?"