Deli putem


Funkcije IsMatch, Match i MatchAll

Odnosi se na: Aplikacije platna CLI aplikacije Power Pages Power Platform zasnovane na modelu

Testira za podudaranje ili izdvaja delove tekstualne niske na osnovu obrasca.

Opis

Funkcija IsMatch testira da li se tekstualna niska podudara sa obrascem koji može sadržavati obične znakove, unapred definisane obrasce ili regularni izraz. Funkcije Match i MatchAll vraćaju podudaranja, uključujući i podudaranja manjeg stepena.

Koristite IsMatch da biste proverili valjanost onoga što je korisnik uneo u kontroli Unos teksta. Na primer, možete da potvrdite da li je korisnik uneo važeću adresu e-pošte pre nego što se rezultat sačuva u vaš izvor podataka. Ako se stavka ne podudara sa vašim kriterijumima, dodajte druge kontrole koje će od korisnika zatražiti da ispravi stavku.

Koristite Match da biste izdvojili prvu tekstualnu nisku koja se podudara sa obrascem i MatchAll da biste izdvojili sve tekstualne niske koje se podudaraju. Možete i da izdvojite podudaranja manjeg stepena da biste raščlanili složene niske.

Meč vraća zapis informacija za prvi meč pronađen, i MatchAll vraća tabelu zapisa za svaki meč pronađen. Zapis ili zapisi sadrže:

Column Tip Opis
Imenovani podmeč ili podmečevi Tekst Svako imenovano podudaranje manjeg nivoa će imati svoju kolonu. Kreirajte imenovano podudaranje manjeg nivoa pomoću (?<naziv>...) u regularnom izrazu. Ako imenovano podudaranje manjeg nivoa ima isti naziv kao i jedna od unapred definisanih kolona (ispod), podudaranje manjeg nivoa ima prednost, a generiše se upozorenje. Da biste izbegli ovo upozorenje, preimenujte podudaranje manjeg nivoa.
Kompletne utakmice Tekst Cela tekstualna niska koja je bila podudarna.
Početak utakmice Broj Početna pozicija podudaranja u ulaznoj tekstualnoj niski. Prvi znak niske vraća 1.
Podmečevi Tabela sa jednom kolonom teksta (kolona Vrednost) Tabela imenovanih i neimenovanih podudaranja manjeg nivoa u redosledu u kojem se pojavljuju u regularnom izrazu. Uopšte, sa imenovanim podudaranjima nižeg nivoa je lakše raditi i preporučujemo da ih koristite. Koristite funkciju ForAll ili funkcije Last( FirstN( ... ) ) za rad sa pojedinačnim podudaranjem manjeg nivoa. Ako u regularnom izrazu nisu definisana podudaranja manjeg nivoa, ova tabela će biti prisutna, ali prazna.

Ove funkcije podržavaju MatchOptions. Podrazumevano:

  • Ove funkcije izvode podudaranje koje razlikuje velika i mala slova. Koristite MatchOptions.IgnoreCase da biste izvršili podudaranja bez razlikovanja velikih i malih slova.
  • IsMatch odgovara čitavom tekstualnom nizu (Complete MatchOption), dok Match i MatchAll traže podudaranje bilo gde u tekstualnom nizu (sadrži MatchOption). Koristite Complete, Contains, BeginsWith ili EndsWith, kako odgovara vašem scenariju.

IsMatch vraća true ako se tekstualni string poklapa sa modelom ili laž ako se ne poklapa. Podudaranje vraća prazno ako nijedno poudaranje nije pronađeno koje je moguće testirati pomoću funkcije IsBlank. MatchAll vraća praznu tabelu ako se ne nađe podudaranje koje se može testirati sa funkcijom IsEmpty .

Ako koristite MatchAll da biste podelili tekstualnu nisku, razmislite o korišćenju funkcije Split koja je jednostavnija za upotrebu i brža.

Obrasci

Ključ za korišćenje ovih funkcija je u opisu obrasca koji treba da se podudara. Opisujete obrazac u tekstualnoj niski kao kombinaciju:

  • Običnih znakova, kao što su „abc“ ili „123“.
  • Unapred definisani obrasci, kao što su Letter, MultipleDigits ili Email. (Numerička Match definiše ove obrasce.)
  • Kodovi regularnog izraza, kao što su "\d+\s+\d+" ili „[a-z]+“.

Kombinujte ove elemente pomoću operatora string-concatenation &. Na primer, "abc" & Digit & "\s +" je važeći obrazac koji odgovara znakovima "a", "b" i "c", nakon čega sledi cifra od 0 do 9, a zatim najmanje jedan znak razmaka.

Obični znakovi

Najjednostavniji obrazac je niz običnih znakova koji se tačno podudaraju.

Na primer, kada se koristi sa funkcijom IsMatch, niska "Zdravo" se tačno podudara sa obrascem "Zdravo". Ni više ni manje. Niska "zdravo!" ne odgovara obrascu zbog uzvičnika na kraju i zato što je veličina slova pogrešna na slovu „z“. (Pogledajte MatchOptions za načine izmene ovog ponašanja.)

U jeziku obrasca određeni znakovi su rezervisani za posebne namene. Da biste koristili ove znakove, stavite prefiks \ (leva kosa crta) ispred znaka da biste naznačili da znak treba shvatiti doslovno ili koristite jedan od unapred definisanih obrazaca opisanih kasnije u ovoj temi. U ovoj tabeli su navedeni posebni znakovi:

Poseban znak Opis
. tačka
? znak pitanja
* zvezdica
+ plus
( ) zagrade
[ ] uglaste zagrade
{ } vitičaste zagrade
^ karet
$ simbol za dolar
| vertikalna crta ili kanal
\ kosa crta ulevo

Na primer, možete da se podudarate sa "Zdravo?" pomoću obrasca "Zdravo\?" sa levom kosom crtom pre znaka pitanja.

Unapred definisani obrasci

Unapred definisani obrasci omogućavaju jednostavan način za podudaranje bilo kog skupa znakova ili niza više znakova. Koristite operator string-concatenation & da kombinujete svoje tekstualne nizove sa članovima Matchnabrajanje :

Numerička vrednost Match Opis Regularni izraz
Bilo koji Odgovara bilo kom znaku. .
Zarez Podudara se sa zarezom. ,
Cifra Podudara se sa jednom cifrom (od „0“ do „9“). \d
E-pošta Odgovara adresi e-pošte koja sadrži simbol „et“ („@“) i naziv domena koji sadrži tačku („.“) .+\@.+\\.[^\\.]{2,}
Crtica Podudara se sa crticom. \-
Srpsko-hrvatski Podudara se sa levom zagradom „(“. \(
Pismo Podudara se sa slovom. \p{L}
MultipleDigits Podudara se sa jednom ili više cifara. \d+
MultipleLetters Podudara se sa jednim ili više slova. \p{L}+
MultipleNonSpaces Podudara se sa jednim ili više znakova koji ne dodaju prazan prostor (a ne razmak, karticu ili novi red). \S+
MultipleSpaces Podudara se sa jednim ili više znakova koji dodaju prazan prostor (razmak, karticu ili novi red). \s+
Pretraživanje Podudara se sa jednim znakom koji ne dodaje prazan prostor. \S
OpcionoCifre Podudara se sa nula, jednom ili više cifara. \d*
OpcionoPisma Podudara se sa nula, jednim ili više slova. \p{L}*
OpcionoNonSpaces Podudara se sa nula, jednim ili više znakova koji ne dodaju prazan prostor. \S*
OpcioniProstori Podudara se sa nula, jednim ili više znakova koji dodaju prazan prostor. \s*
Menstruacija Podudara se sa tačkom („.“). \.
OMILjENO Podudara se sa desnom zagradom „)“. \)
Prostora Odgovara znaku koji dodaje prazan prostor. \s
Kartici Poklapa se sa znakom za tabulaciju. \t

Na primer, obrazac "A" & MultipleDigits će se podudarati sa slovom "A" nakon čega sledi jedna ili više cifara.

Regularni izrazi

Obrazac koji ove funkcije koriste je regularni izraz. Obični znakovi i unapred definisani obrasci koji su opisani ranije u ovoj temi pomažu u izgradnji regularnih izraza.

Redovni izrazi su veoma moćni, dostupni su u mnogim programskim jezicima, a koriste se u najrazličitije svrhe. Takođe mogu često izgledati kao slučajni niz interpunkcijskih znakova. Ovaj članak ne opisuje sve aspekte regularnih izraza, ali na internetu je dostupno mnoštvo informacija, vodiča i alatki.

Regularni izrazi dolaze u različitim dijalektima, a Power Apps koristi varijantu JavaScript dijalekta. Pogledajte sintaksa regularnog izraza za uvod u sintaksu. Podržana su podudaranja manjeg nivoa (koja se ponekad nazivaju i imenovane grupe za nalaženje):

  • Imenovana podudaranja manjeg nivoa: (?<name> ...)
  • Imenovane povratne reference: \k<name>

U numeričkoj tabeli Match ranije u ovoj temi, svaka numerička vrednost se pojavljuje u istom redu kao i odgovarajući regularni izraz.

Opcije podudaranja

Možete da izmenite ponašanje ovih funkcija tako što ćete odrediti jednu ili više opcija, koje možete kombinovati pomoću operatora string-concatenation (&).

Numerički MatchOptions Opis Uticaj na regularni izraz
MatchOptions.BeginsVith Obrazac se mora podudarati od početka teksta. Dodaje ^ na početak regularnog izraza.
MatchOptions.Complete Podrazumevano za IsMatch. Obrazac se mora podudarati sa celom niskom teksta, od početka do kraja. Dodaje ^ na početak i $ na kraj regularnog izraza.
MatchOptions.Contains Podrazumevano za Match i MatchAll. Obrazac se mora pojaviti negde u tekstu, ali ne mora da ga započinje ili završava. Ne menja regularni izraz.
MatchOptions.EndsVith Obrazac se mora podudarati sa krajem niske teksta. Dodaje $ na kraj regularnog izraza.
MatchOptions.IgnoreCase Velika i mala slova tretira kao identična. Podrazumevano je podudaranje osetljivo na velika i mala slova. Ne menja regularni izraz. Ova opcija je ekvivalent standardnom „i“ modifikatoru regularnih izraza.
MatchOptions.Multiline Podudara se u više linija. Ne menja regularni izraz. Ova opcija je ekvivalent standardnom „m“ modifikatoru regularnih izraza.

Korišćenje MatchAll je ekvivalentno korišćenju standardnog „g“ modifikatora za regularne izraze.

Sintaksa

IsMatch ( tekst, obrazac [ , opcije ] )

  • Tekst – Obavezno. Niska teksta za testiranje.
  • Obrazac – Obavezno. Obrazac za testiranje kao tekstualna niska. Povežite unapred definisane obrasce koji numerička vrednost Match definiše, ili obezbedite pravilan izraz. Obrazac mora biti konstantna formula bez ikakvih varijabli, izvora podataka ili drugih dinamičkih referenci koje se menjaju dok se aplikacija pokreće.
  • Opcije – Opciono. Kombinacija tekstualne niske od numeričkih MatchOptions vrednosti. Podrazumevano, MatchOptions.Complete se koristi.

Podudaranje ( tekst, obrazac [ , opcije ] )

  • Tekst – Obavezno. Niska teksta za podudaranje.
  • Obrazac – Obavezno. Obrazac za podudaranje kao tekstualna niska. Povežite unapred definisane obrasce koji numerička vrednost Match definiše, ili obezbedite pravilan izraz. Obrazac mora biti konstantna formula bez ikakvih varijabli, izvora podataka ili drugih dinamičkih referenci koje se menjaju dok se aplikacija pokreće.
  • Opcije – Opciono. Kombinacija tekstualne niske od numeričkih MatchOptions vrednosti. Podrazumevano, MatchOptions.Contains se koristi.

MatchAll( tekst, obrazac [ , opcije ] )

  • Tekst – Obavezno. Niska teksta za podudaranje.
  • Obrazac – Obavezno. Obrazac za podudaranje kao tekstualna niska. Povežite unapred definisane obrasce koji numerička vrednost Match definiše, ili obezbedite pravilan izraz. Obrazac mora biti konstantna formula bez ikakvih varijabli, izvora podataka ili drugih dinamičkih referenci koje se menjaju dok se aplikacija pokreće.
  • Opcije – Opciono. Kombinacija tekstualne niske od numeričkih MatchOptions vrednosti. Podrazumevano, MatchOptions.Contains se koristi.

IsMatch primeri

Obični znakovi

Zamislite da vaša aplikacija sadrži kontrolu Unos teksta nazvanu TextInput1. Korisnik unosi vrednosti u ovu kontrolu koja se čuva u bazi podataka.

Korisnik unosi Zdravo svima u TextInput1.

Formula Opis Rezultat
IsMatch( TextInput1.Text, "Hello world" ) Testira da li se unos korisnika tačno podudara sa niskom „Zdravo svima“. Istina
IsMatch( TextInput1.Text, "Good bye" ) Testira da li se unos korisnika tačno podudara sa niskom „Doviđenja“. lažan
IsMatch( TextInput1.Text, "hello", Contains ) Ispituje da li korisnikov unos sadrži reč „zdravo“ (razlikujući velika i mala slova). lažan
IsMatch( TextInput1.Text, "hello", Contains & IgnoreCase ) Ispituje da li korisnikov unos sadrži reč „zdravo“ (ne razlikujući velika i mala slova). Istina

Unapred definisani obrasci

Formula Opis Rezultat
IsMatch( "123-45-7890", Digit & Digit & Digit & Hyphen & Digit & Digit & Hyphen & Digit & Digit & Digit & Digit ) Podudara se sa brojem zdravstvenog osiguranja Sjedinjenih Država Istina
IsMatch( "joan@contoso.com", Email ) Podudara se sa e-adresom Istina
IsMatch( "123.456", MultipleDigits & Period & OptionalDigits ) Podudara se sa nizom cifara, tačke, a zatim nule ili više cifara. Istina
IsMatch( "123", MultipleDigits & Period & OptionalDigits ) Podudara se sa nizom cifara, tačke, a zatim nule ili više cifara. U tekstu se ne pojavljuje tačka koja treba da se podudara, tako da se ovaj obrazac ne podudara. lažan

Regularni izrazi

Formula Opis Rezultat
IsMatch( "986", "\d+" ) Podudara se sa celim brojem većim od nule. Istina
IsMatch( "1.02", "\d+(\.\d\d)?" ) Podudara se sa pozitivnim iznosom valute. Ako ulaz sadrži decimalnu tačku, unos mora da sadrži i dva numerička znaka nakon decimalne tačke. Na primer, 3,00 je važeće, ali 3,1 nije. Istina
IsMatch( "-4.95", "(-)?\d+(\.\d\d)?" ) Podudara se sa pozitivnim ili negativnim iznosom valute. Ako ulaz sadrži decimalnu tačku, unos mora da sadrži i dva numerička znaka nakon decimalne tačke. Istina
IsMatch( "111-11-1111", "\d{3}-\d{2}-\d{4}" ) Podudara se sa brojem zdravstvenog osiguranja Sjedinjenih Država. Proverava format, tip i dužinu navedenog polja za unos. Niska koja se podudara mora se sastojati od tri numerička znaka, nakon kojih sledi crtica, zatim dva numerička znaka, nakon kojih slijedi crtica, a zatim četiri numerička znaka. Istina
IsMatch( "111-111-111", "\d{3}-\d{2}-\d{4}" ) Isto kao u prethodnom primeru, ali jedna od crtica nije na mestu u polju. lažan
IsMatch( "AStrongPasswordNot", "(?!^[0-9]\*$)(?!^[a-zA-Z]\*$)([a-zA-Z0-9]{8,10})" ) Potvrđuje valjanost jake lozinke koja mora sadržati osam, devet ili 10 znakova, pored najmanje jedne cifre i najmanje jednog abecednog znaka. Niska ne sme da sadrži specijalne znakove. lažan

Primeri Match i MatchAll

Formula Opis Rezultat
Match( "Bob Jones <bob.jones@contoso.com>", "<(?<email>" & Match.Email & ")>" Izdvaja samo deo e-pošte iz podataka o kontaktima. {
email: "bob.jones@contoso.com",
FullMatch: "<bob.jones@contoso.com>",
SubMatches: [ "bob.jones@contoso.com" ],
StartMatch: 11
}
Match( "Bob Jones <InvalidEmailAddress>", "<(?<email>" & Match.Email & ")>" Izdvaja samo deo e-pošte iz podataka o kontaktima. Nije pronađena nijedna zakonska adresa (nema znaka @), pa funkcija vraća prazno. Prazno
Match( Language(), "(<language>\w{2})(?:-(?<script>\w{4}))?(?:-(?<region>\w{2}))?" ) Izdvaja delove jezika, skripte i regiona oznake za jezik, koju funkcija Language vraća. Ovi rezultati odražavaju Sjedinjene Države; pogledajte dokumentaciju funkcije Language za više primera. Operator (?: grupiše znakove bez kreiranja drugog podudaranja manjeg nivoa. {
language: "en",
script: prazno,
region: "US",
FullMatch: "en-US",
SubMatches: [ "en", "", "US" ],
StartMatch: 1
}
Match( "PT2H1M39S", "PT(?:<hours>\d+)H)?(?:(?<minutes>\d+)M)?(?:(?<seconds>\d+)S)?" ) Izvlači sate, minute i sekunde iz ISO 8601 vrednosti trajanja. Izdvojeni brojevi su još uvek u tekstualnoj niski; koristite funkciju Value da ih pretvorite u broj pre nego što se na njemu izvrše matematičke operacije. {
hours: "2",
minutes: "1",
seconds: "39",
FullMatch: "PT2H1M39S",
SubMatches:["2","1","39"],
StartMatch: 1
}

Hajde da dubinski pregledamo poslednji primer. Ako ste želeli da pretvorite ovu nisku u vrednost datum/vreme pomoću funkcije Time, morate da prosledite podudaranja manjeg nivoa pojedinačno. Da biste ovo uradili, možete da koristite funkciju With funkcija koja radi na zapisu koju vraća Match:

With(
    Match( "PT2H1M39S", "PT(?:(?<hours>\d+)H)?(?:(?<minutes>\d+)M)?(?:(?<seconds>\d+)S)?" ),
   Time( Value( hours ), Value( minutes ), Value( seconds ) )
)

Za ove primere dodajte kontrolu Dugme, postavite njeno svojstvo OnSelect prema ovoj formuli, a zatim izaberite dugme:

Set( pangram, "The quick brown fox jumps over the lazy dog." )
Formula Opis Rezultat
Match( pangram, "THE", IgnoreCase ) Pronađite sva podudaranja od „THE“ u tekstualnoj niski koju sadrži promenljiva pangram. Niska sadrži dva podudaranja, ali samo prvo se vraća jer koristite Match, a ne MatchAll. Kolona SubMatches je prazna jer nisu definisana podudaranja manjeg nivoa. {
FullMatch: „The“,
SubMatches: [ ],
StartMatch: 32
}
MatchAll( pangram, "the" ) Pronađite sva podudaranja od „the“ u tekstualnoj niski koju sadrži promenljiva pangram. Test razlikuje velika i mala slova, tako da je pronađena samo druga instanca od „the“. Kolona SubMatches je prazna jer nisu definisana podudaranja manjeg nivoa. MatchAll za pangram.
MatchAll( pangram, "the", IgnoreCase ) Pronađite sva podudaranja od „the“ u tekstualnoj niski koju sadrži promenljiva pangram. U ovom slučaju, test nije osetljiv na velika i mala slova, tako da su obe instance reči pronađene. Kolona SubMatches je prazna jer nisu definisana podudaranja manjeg nivoa. MatchAll sa IgnoreCase.
MatchAll( pangram, "\b\wo\w\b" ) Pronalazi sve reči od tri slova koje imaju „o“ u sredini. Imajte na umu da se "brown" isključuje jer nije reč sa tri slova, a prema tome se ne podudara sa „\b“ (granica reči). MatchAll za pangram sa b, wo, w i b.
Match( pangram, "\b\wo\w\b\s\*(?<between>\w.+\w)\s\*\b\wo\w\b" ) Podudara se sa svim znacima između "fox" i "dog". {
between: "skače preko uspavanog",
FullMatch: "lisica skače preko uspavanog psa",
SubMatches: [ "jumps over the lazy" ],
StartMatch: 17
}

Da biste videli rezultate MatchAll u galeriji:

  1. Na praznom ekranu umetnite praznu vertikalnu kontrolu Galerija.

  2. Podesite svojstvo Items galerije kao MatchAll( pangram, "\w+" ) ili MatchAll( pangram, MultipleLetters ).

    Galerija stavki.

  3. Izaberite „Dodajte stavku sa kartice Umetanje“ na sredini kontrole galerije za odabir predloška galerije:

  4. Dodajte kontrolu Oznaka u predložak galerije.

  5. Podesite svojstvo Text oznake na ThisItem.FullMatch.

    Galerija je ispunjena svakom rečju u našem primeru teksta. Promenite veličinu predloška galerije i kontrole oznake kako biste videli sve reči na jednom ekranu.

    Svojstvo Text.