C#-säännöllinen lauseke (esimerkein) (2024)

A Regex (Reghe ovatEsimpression) on kuvio, jota käytetään tarkistamaan, vastaako tietty merkkijono tätä kuviota. Esimerkiksi,

// säännöllinen lausekemalli"^m.t$"

Yllä oleva kuvio osoittaa kolmikirjaimisen merkkijonon, jossa

  • ^- osoittaa, että merkkijono alkaam
  • .- osoittaa minkä tahansa kirjaimen tai merkin
  • $- osoittaa merkkijonon loppujent

Esimerkiksi merkkijonot kuten"matto"ja"kanssa"vastaa yllä olevaa regex-mallia. Kuitenkin jouset kuten"äiti"ja"magneetti"eivät täsmää, koska nämä merkkijonot eivät ole3kirjain sanoja, jotka alkavatmja lopuksit.

Opimme säännöllisistä lausekkeista yksityiskohtaisesti alla.

C# Regex-luokka

C# tarjoaa luokan nimeltäRegexkäyttääksesi säännöllisen lausekkeen ominaisuuksia. Ennen kuin käytätRegexluokkaa, meidän on käytettäväSystem.Text.RegularExpressionnimiavaruus.

Sitten meidän on luotava esiintymäRegexluokka:

Regex regexName = uusi Regex(malli);

Tässä,

  • regexName- esiintymän nimiRegexluokkaa
  • kuvio- säännöllinen lausekekuvio, jonka haluamme välittää

Esimerkki: C# Regex

käyttämällä järjestelmää;

käyttäen System.Text.RegularExpressions;

class Ohjelma{ // säännöllinen lausekekuvio viisikirjaimille sanalle // joka alkaa kirjaimella "a" ja päättyy "e":llä staattinen merkkijonomalli = "^a...e$"; static void Main() { // luo Regex-luokan esiintymä ja // välitä säännöllinen lauseke (eli malli) Regex rg = new Regex(pattern);

// IsMatch() palauttaa tosi, jos "omena" vastaa säännöllistä lauseketta if (rg.IsMatch("omena")) { Console.WriteLine("Merkkijono vastaa kuviota"); }

else { Console.WriteLine("Merkkijono ei vastaa kuviota"); } }}

Lähtö

Lanka sopii kuvioon

Yllä olevassa esimerkissä olemme tarkistaneet, onko merkkijono"omena"vastaa määritettyä säännöllisen lausekkeen mallia.

Kaava"^a...e$"osoittaa mitä tahansa viisikirjaimista merkkijonoa, joka alkaaaja päättyene. Tässä,IsMatch()menetelmä palauttaaTottajos ohittamamme merkkijono vastaa säännöllisen lausekkeen mallia.

Jos ohitamme esimerkiksi toisen merkkijonon -"apache", se ei sovi yhteenkuviokoska"apache"välissä on enemmän kuin kolme kirjaintaajae.

Huomautus:Määritämme regexin merkkijonoksi. Esimerkiksi,

merkkijonomalli = "^a...e$";

Kuinka Regex toimii?

C#:ssa on moottori nimeltään regex engine, joka tarkistaa sisäisesti regex-kuvion annetussa merkkijonossa.

C# regex (With Examples) (1)

Yllä olevassa kuvassa regex-moottori käsittelee kaksi syötettä:

  • ^a…e$- regex-kuvio
  • "omena"- annettu merkkijono, jonka haluamme yhdistää

Kun regex-kuvio välitetään moottoriin, se tulkitaan. Moottori on sitten vastuussa hakutoiminnosta eli säännöllisen lausekkeen mallin sovittamisesta syötemerkkijonoon.

Säännöllisten lausekkeiden määrittämiseen käytetään metamerkkejä. Metamerkit ovat merkkejä, jotka regex-moottori tulkitsee erityisellä tavalla.

Jotkut perusmetahahmoista ovat:

  • []- hakasulku
  • .- kausi
  • ^- caret
  • $- dollari
  • *- tähti
  • +- plus
  • ?- kysymysmerkki
  • {}- henkselit
  • ()-sulut
  • |- vuorottelu

[]- Hakasulkeet

[]määrittää joukon merkkejä, joita haluat yhdistää.

Esimerkiksi,

  • regex -[abc]
  • vastaa - mikä tahansa merkkijono, joka sisältää jonkin seuraavistaa,b, taic.

Tarkastetaan, vastaavatko seuraavat merkkijonoesimerkit säännöllistä lauseketta[abc].

merkkijonoVastaako?Syy
a1 ottelumerkkijono sisältääa
ac2 Ottelumerkkijono sisältääajac
jim0 ottelumerkkijono ei sisällä mitääna,btaic
abc3 Ottelumerkkijono sisältää kaikki kolme -a,bjac

Huomautus:Voit myös määrittää merkkialueen käyttämällä-hakasulkujen sisällä. Esimerkiksi,

  • [a-e]on sama kuin[abcde]
  • [0-3]on sama kuin[0123]

. - Kausi

Piste määrittää minkä tahansa yksittäisen merkin (paitsi rivinvaihtoa'\n').

Esimerkiksi,

  • regex -
  • ottelut - kolme kirjainta sisältävät merkkijonot

Tarkastetaan, vastaavatko seuraavat merkkijonoesimerkit säännöllistä lauseketta

merkkijonoVastaako?Syy
abs1 ottelumerkkijono sisältää kolme kirjainta (a,b,s)
ac0 ottelumerkkijono ei sisällä kolmea kirjainta
jim1 ottelumerkkijono sisältää kolme kirjainta
abcd1 ottelumerkkijono sisältää kolme kirjainta
abcjkl2 otteluamerkkijono sisältää6kirjaimet (3+3)

^ - Huoli

Caret-symboli^määrittää, että merkkijono alkaa tietyllä merkillä.

Esimerkiksi,

  • regex -^m
  • ottelut - kirjaimella alkava merkkijono"m"

Tarkastetaan, vastaavatko seuraavat merkkijonoesimerkit säännöllistä lauseketta^m.

merkkijonoVastaako?Syy
mies1 ottelumiesalkaa kanssa"m"
m1 ottelumalkaa kanssa"m"
Mies0 otteluMiesei ala"m"
tekstiviesti0 ottelutekstiviestiei ala"m"

$ - dollari

Dollarin symboli$määrittää merkkijonon loppujen tiettyyn merkkiin.

Esimerkiksi,

  • regex -y$
  • ottelut - merkkijono, joka päättyy kirjaimeen"y"

Tarkastetaan, vastaavatko seuraavat merkkijonoesimerkit säännöllistä lausekettay$.

merkkijonoVastaako?Syy
maanantai1 ottelumaanantailoppuu"y"
sanoa1 ottelusanoaloppuu"y"
nimeni0 ottelunimeniei pääty"y"

* - Tähti

Tähti symboli*vastaa nollaa tai useampaa esiintymää sille jätetystä kuviosta.

Esimerkiksi,

  • regex -kissa
  • vastaa - merkkijono, jossa on mikä tahansa luku [mukaan lukien nolla]avälissäcjat

Tarkastetaan, vastaavatko seuraavat merkkijonoesimerkit säännöllistä lausekettakissa.

merkkijonoVastaako?Syy
kissa1 ottelukissaon yksiavälilläcjat
ct1 ottelucton nollaavälilläcjat
caaaat1 ottelucaaaaton kolmeavälilläcjat
crt0 ottelucrton kirjer(eia) välilläcjat
caatcaaat2 otteluacaatcaaatonakahdessa paikassa (caatjacaaat)

+ - Plussaa

Plussymboli+vastaa yhtä tai useampaa siihen jätetyn kuvion esiintymää.

Esimerkiksi,

  • regex -ma+t
  • vastaa - merkkijono, jossa on yksi tai useampi numeroavälissämjat

Tarkastetaan, vastaavatko seuraavat merkkijonoesimerkit säännöllistä lausekettama+t.

merkkijonoVastaako?Syy
matto1 ottelumattoon yksiavälillämjat
mt0 ottelumtei oleavälillämjat
kaveri2 otteluakaverisisältää kaksi vastaavaa osamerkkijonoa (mattojamaat)
mart0 otteluaei seuraatsisäänmart

? - Kysymysmerkki

Kysymysmerkin symboli?vastaa nollaa tai yhtä esiintymää sille jätetystä kuviosta.

Esimerkiksi,

  • regex -mies
  • vastaa - merkkijono, jossa on yksi tai nolla numeroavälissämjan

Tarkastetaan, vastaavatko seuraavat merkkijonoesimerkit säännöllistä lausekettamies.

merkkijonoVastaako?Syy
mies1 ottelumieson yksiavälillämjan
mn1 ottelumnon nolla numeroaavälillämjan
maaaaaan0 ottelumaaaaaanon enemmän kuin yksiahahmo välillämjan
nainen1 ottelunainenon yksiavälillämjan

{} - Aaltosulkeet

Aaltosulkujen symboli{}käytetään määrittämään sille jätetyn kuvion toistoalue.

Esimerkiksi,

  • regex -a{2,3}
  • ottelut - merkkijono, jolla on vähintään2 aja korkeintaan3 ajää siihen

Tarkastetaan, vastaavatko seuraavat merkkijonoesimerkit säännöllistä lausekettaa{2,3}.

merkkijonoVastaako?Syy
abcdat0 otteluon vain yksiatoisen hahmon vasemmalla puolella
abcdaat1 otteluabcdaaton kaksiatoisen hahmon vasemmalla puolella
aabc daaat2 otteluaaabc daaaton kaksi ja kolmeatoisen hahmon vasemmalla puolella

| - Vaihtoehto

Pystypalkki|käytetään muodossataioperaattori.

Esimerkiksi,

  • regex -a|b
  • ottelut - merkkijono, jossa on jompikumpiataib

Tarkastetaan, vastaavatko seuraavat merkkijonoesimerkit säännöllistä lausekettaa|b.

merkkijonoVastaako?Syy
cde0 ottelumerkkijonolla ei ole kumpaakaanataib
ade1 ottelu (ottelu kloade)onamerkkijonossa
acdbea3 ottelua (atacdbea)merkkijonossa on kaksiaja yksib

() - Sulkumerkit

Suluissa()käytetään ryhmittelemään alamalleja.

Esimerkiksi,

  • regex -(a|b|c)xz
  • ottelut - mikä tahansa merkkijono, jossa on jompikumpiataibtaicjonka jälkeenxz

Tarkastetaan, vastaavatko seuraavat merkkijonoesimerkit säännöllistä lauseketta(a|b|c)xz.

merkkijonoVastaako?Syy
abxz1 ottelu (ottelu kloabxz)ataibseuraaxz
alkaen xz0 otteluvälissä on valkoinen väliabjaxz
axz cabxz2 ottelua (ataxzbcjacabxz)aseuraaxzjabseuraaxz

Erikoissekvenssit

Erikoissekvenssit helpottavat yleisesti käytettyjen kuvioiden kirjoittamista.

Jotkut erikoissekvensseistä ovat:

\A - Vastaa, jos määritetyt merkit ovat merkkijonon alussa.

Tarkastetaan, vastaavatko seuraavat merkkijonoesimerkit säännöllistä lausekettaAnna hänen lopettaa.

merkkijonoVastaako?Syy
aurinkoOttelumerkkijono alkaathe
VuonnaEi osumiamerkkijono ei alathe

\b - Vastaa, jos määritetyt merkit ovat sanan alussa tai lopussa.

Esimerkiksi,

  • regex -\bfoo
  • vastaa - mikä tahansa sana merkkijonossa, jolla onfooalussa.

Tarkastetaan, vastaavatko seuraavat merkkijonoesimerkit säännöllistä lauseketta\bfoo.

merkkijonoVastaako?Syy
jalkapalloOttelufooon sanan alussa (jalkapallo)
jalkapalloOttelufooon sanan alussa (a jalkapallo)
jalkapalloEi osumiaonasanan alussa (jalkapallo)

Otetaan esimerkiksi toinen regex,

  • regex -foo\b
  • vastaa - mikä tahansa sana merkkijonossa, jolla onfoolopussa.

Tarkastetaan, vastaavatko seuraavat merkkijonoesimerkit säännöllistä lausekettafoo\b.

merkkijonoVastaako?Syy
fooOttelufooon sanan lopussa (the foo)
afoo-testiOttelufooon sanan lopussa (afoo testata)
enimmäkseenEi osumiaei olefoosanan lopussa

\B - Vastaa, jos määritetyt merkit eivät ole sanan alussa tai lopussa.

Esimerkiksi,

  • regex -\Bfoo
  • vastaa - mikä tahansa sana merkkijonossa, jokaei ole fooalussa.
merkkijonoVastaako?Syy
jalkapalloEi osumiamerkkijonolla onfooalussa
fooEi osumiamerkkijonolla onfooalussa
jalkapalloOttelumerkkijonolla ei olefooalussa

Otetaan esimerkiksi toinen regex,

  • regex -foo\B
  • vastaa - mikä tahansa sana merkkijonossa, jokaei ole foolopussa

Tarkastetaan, vastaavatko seuraavat merkkijonoesimerkit säännöllistä lausekettafoo\B.

merkkijonoVastaako?Syy
jalkapalloOttelumerkkijonolla ei olefoolopussa
fooEi osumiamerkkijonolla onfoolopussa
jalkapalloOttelumerkkijonolla ei olefoolopussa

\d - Vastaa mitä tahansa desimaalilukua. Vastaa [0-9]

Tarkastetaan, vastaavatko seuraavat merkkijonoesimerkit säännöllistä lauseketta\d.

merkkijonoVastaako?Syy
12abc33 ottelua (at12abc3)merkkijonossa on kolme desimaalilukua
ohjelmointiEi osumiamerkkijonossa ei ole desimaalilukuja

\D - Vastaa mitä tahansa ei-desimaalilukua. Vastaa [^0-9]

Tarkastetaan, vastaavatko seuraavat merkkijonoesimerkit säännöllistä lauseketta\D.

merkkijonoVastaako?Syy
12abc33 ottelua (at12abc3)siellä on kolme ei-desimaalilukua (a,bjac)
1234Ei osumiaei ole ei-desimaalimerkkiä

\s - Vastaa, kun merkkijono sisältää minkä tahansa välilyönnin. Vastaa [ \t\n\r\f\v].

Tarkastetaan, vastaavatko seuraavat merkkijonoesimerkit säännöllistä lauseketta\s.

merkkijonoVastaako?Syy
ohjelmamaailma1 otteluamerkkijono sisältää yhden välilyönnin
ohjelmamaailmaEi osumiamerkkijono ei sisällä tyhjää välilyöntiä

\S - Vastaa, kun merkkijono sisältää minkä tahansa muun kuin välilyönnin. Vastaa [^ \t\n\r\f\v].

Tarkastetaan, vastaavatko seuraavat merkkijonoesimerkit säännöllistä lauseketta\S.

merkkijonoVastaako?Syy
a b2 ottelua (ata b)merkkijono sisältää kaksi muuta kuin välilyöntiä (ajab)
Ei osumiamerkkijono ei sisällä muuta kuin valkoista välilyöntiä

\w - Vastaa mitä tahansa aakkosnumeerista merkkiä (numerot ja aakkoset). Vastaa [a-zA-Z0-9_].

Tarkastetaan, vastaavatko seuraavat merkkijonoesimerkit säännöllistä lauseketta\w.

merkkijonoVastaako?Syy
a2&": ;c3 ottelua (at12": ;c)merkkijono sisältää kolme aakkosnumeerista merkkiä (a,2ja3)
%"> !Ei osumia

Huomautus:Alaviiva (_) pidetään myös aakkosnumeerisena merkkinä.

\W - Vastaa mitä tahansa ei-aakkosnumeerista merkkiä. Vastaa [^a-zA-Z0-9_].

Tarkastetaan, vastaavatko seuraavat merkkijonoesimerkit säännöllistä lauseketta\W.

merkkijonoVastaako?Syy
a2%c1 ottelu (ata2%c)merkkijono sisältää yhden ei-aakkosnumeerisen merkin(%)
omenaEi osumiamerkkijono ei sisällä ei-aakkosnumeerista merkkiä
C#-säännöllinen lauseke (esimerkein) (2024)
Top Articles
Latest Posts
Article information

Author: Amb. Frankie Simonis

Last Updated:

Views: 6577

Rating: 4.6 / 5 (76 voted)

Reviews: 83% of readers found this page helpful

Author information

Name: Amb. Frankie Simonis

Birthday: 1998-02-19

Address: 64841 Delmar Isle, North Wiley, OR 74073

Phone: +17844167847676

Job: Forward IT Agent

Hobby: LARPing, Kitesurfing, Sewing, Digital arts, Sand art, Gardening, Dance

Introduction: My name is Amb. Frankie Simonis, I am a hilarious, enchanting, energetic, cooperative, innocent, cute, joyous person who loves writing and wants to share my knowledge and understanding with you.