Funkcije IsMatch, Match i MatchAll
Primjenjuje se na sljedeće: Aplikacije radnog područja CLI aplikacija Power Pages Power Platform utemeljenih na modelu
Ispituje podudaranje ili izdvaja dijelove tekstnog niza na temelju nekog uzorka.
Opis
Funkcija IsMatch ispituje podudara li se tekstni niz s nekim uzorkom koji može sadržavati obične znakove, unaprijed definirane uzorke ili regularni izraz. Funkcije Match i MatchAll vraćaju rezultate podudanja, uključujući i podrezultate.
Upotrijebite funkciju IsMatch kako biste provjerili valjanost onoga što je korisnik unio u kontrolu Text input. Na primjer, možete potvrditi je li korisnik unio valjanu adresu e-pošte prije nego što se rezultat spremi u vaš izvor podataka. Ako se unos ne podudara s vašim kriterijima, dodajte druge kontrole koje traže od korisnika da ispravi taj unos.
Upotrijebite funkciju Match kako biste izdvojili prvi tekstni niz koji odgovara nekom uzorku, a MatchAll kako biste izdvojili sve tekstne nizove koji se podudaraju. Uz to možete izdvojiti podrezultate kako biste raščlanili složene nizove.
Podudaranje vraća zapis informacija za prvo pronađeno podudaranje, a podudaranje svih vraća tablicu zapisa za svako pronađeno podudaranje. Zapis ili zapisi sadrže:
Column | Tip | Opis |
---|---|---|
Imenovano podpodudaranje ili podpodudaranja | SMS | Svaki imenovani podrezultat imat će vlastiti stupac. Stvorite imenovani podrezultat koristeći (?<naziv>...) u regularnom izrazu. Ako imenovani podrezultat ima isti naziv kao neki od unaprijed definiranih stupaca (ispod), podrezultat ima prednost i generira se upozorenje. Da biste izbjegli ovo upozorenje, preimenujte taj podrezultat. |
Cijela utakmica | Text | Cijeli tekstni niz koji je podudaren. |
Početna utakmica | Broj | Položaj početka podudaranja u ulaznom tekstnom nizu. Prvi znak niza vraća broj 1. |
Podutakmice | Jednostupčana tablica teksta (stupac Value) | Tablica imenovanih i neimenovanih podrezultata redoslijedom u kojem se pojavljuju u regularnom izrazu. Općenito, s imenovanim podrezultatima lakše je raditi i ohrabruju se. Upotrijebite funkciju ForAll ili funkcije Last( FirstN( ... ) ) za rad s pojedinačnim podrezultatima. Ako u regularnom izrazu nisu definirani podrezultati, ova će tablica biti prisutna, ali prazna. |
Ove funkcije podržavaju MatchOptions. Prema zadanim postavkama:
- Ove funkcije izvode podudaranje koje razlikuje velika i mala slova. Koristite MatchOptions.IgnoreCase za izvođenje podudaranja bez razlikovanja velikih i malih slova.
- IsMatch odgovara cijelom tekstnom nizu (Complete MatchOption), dok Match i MatchAll traže podudaranje bilo gdje u tekstnom nizu (Contains MatchOption). Upotrijebite Complete, Contains, BeginsWith ili EndsWith sukladno vašem scenariju.
IsMatch vraća true ako se tekstni niz podudara s uzorkom ili false ako se ne podudara. Podudaranje vraća prazno ako se ne pronađe podudaranje koje se može testirati pomoću funkcije IsBlank . MatchAll vraća praznu tablicu ako se ne pronađe podudaranje koje se može testirati pomoću funkcije IsEmpty .
Ako koristite MatchAll da biste podijelili neki tekstni niz, razmotrite upotrebu funkcije Split koja je jednostavnija za upotrebu i brža.
Uzorci
Ključ za korištenje ovih funkcija je u opisu uzorka koji se podudara. Opisujete uzorak u tekstnom nizu kao kombinaciju sljedećeg:
- Obični znakovi, kao što su „abc” ili „123”.
- Unaprijed definirani uzorci, kao što su Letter, MultipleDigits ili Email. (Enumeracija Match definira ove uzorke.)
- Kodovi regularnog izraza, kao što su „\d+\s+\d+” ili „[a-z]+”.
Kombinirajte ove elemente pomoću operatora spajanja nizova&. Na primjer, "abc" & Digit & "\s+" je valjani uzorak koji odgovara znakovima "a", "b" i "c", nakon čega slijedi znamenka od 0 do 9, nakon koje slijedi barem jedan znak razmaka.
Obični znakovi
Najjednostavniji uzorak je slijed običnih znakova koji se treba točno podudariti.
Na primjer, kada se koristi s funkcijom IsMatch, niz „Hello” točno odgovara uzorku „Hello”. Ni više ni manje. Niz "hello!" ne odgovara tom uzorku zbog uskličnika na kraju te zato što je veličina slova pogrešna u slučaju slova „h”. (Za načine izmjene ovog ponašanja pogledajte MatchOptions.)
U jeziku uzorka, određeni su znakovi rezervirani za posebne svrhe. Da biste koristili ove znakove, ili stavite prefiks \ (obrnuta kosa crta) da biste naznačili da znak treba uzeti doslovno, ili upotrijebite jedan od unaprijed definiranih uzoraka opisanih u nastavku ove teme. U ovoj se tablici nalaze posebni znakovi:
Posebni znak | Opis |
---|---|
. | točka |
? | upitnik |
* | zvjezdica |
+ | plus |
( ) | obične zagrade |
[ ] | uglate zagrade |
{ } | vitičaste zagrade |
^ | cirkumfleks |
$ | znak dolara |
| | okomita crta |
\ | obrnuta kosa crta |
Na primjer, možete upariti "Hello?" korištenjem uzorka "Hello\?" s obrnutom kosom crtom prije upitnika.
Unaprijed definirani uzorci
Unaprijed definirani uzorci omogućuju jednostavan način podudaranja ili nekog skupa znakova ili niza više znakova. Upotrijebite operator ulančavanja nizova za kombiniranje vlastitih tekstnih nizova s članovima enumeracija podudaranja :
Enumeracija Match | Opis | Regularni izraz |
---|---|---|
Ikakav | Odgovara bilo kojem znaku. | . |
Zarez | Odgovara zarezu. | , |
Znamenka | Odgovara jednoj znamenki (od „0” do „9”). | \d |
E-pošta | Odgovara adresi e-pošte koja sadrži simbol „at” ("@") i naziv domene koji sadrži točku (".") | .+\@.+\\.[^\\.]{2,} |
Crtica | Odgovara crtici. | \- |
LijevoParen | Odgovara lijevoj običnoj zagradi „(”. | \( |
Slovo | Odgovara slovu. | \p{L} |
Višestruke znamenke | Odgovara jednoj ili više znamenki. | \d+ |
Višestruka slova | Odgovara jednom ili više slova. | \p{L}+ |
VišestrukiNerazmaci | Odgovara jednom ili više znakova koji ne dodaju bjelinu (ne razmak, tabulator, niti novi redak). | \S+ |
Višestruki prostori | Odgovara jednom ili više znakova koji dodaju bjelinu (razmak, tabulator ili novi redak). | \s+ |
Razmak | Odgovara pojedinačnom znaku koji ne dodaje razmak. | \S |
Neobavezne znamenke | Odgovara nula, jednoj ili više znamenki. | \d* |
IzbornaPisma | Odgovara nula, jednoj ili više slova. | \p{L}* |
NeobaveznoNerazmaci | Odgovara nula, jednom ili više znakova koji ne dodaju bjelinu. | \S* |
OptionalSpaces | Odgovara nula, jednom ili više znakova koji dodaju bjelinu. | \s* |
Razdoblje | Odgovara točki („.”). | \. |
DesnoParen | Odgovara desnoj običnoj zagradi „)”. | \) |
Prostor | Odgovara znaku koji dodaje bjelinu. | \s |
Tabulator | Odgovara znaku kartice. | \t |
Na primjer, uzorak "A" i MultipleDigits odgovarat će slovu "A" nakon kojeg slijedi jedna ili više znamenki.
Regularni izrazi
Uzorak koji ove funkcije koriste je regularni izraz. Obični znakovi i unaprijed definirani uzorci koji su opisani ranije u ovoj temi pomažu u konstrukciji regularnih izraza.
Regularni izrazi vrlo su moćni, dostupni u mnogim programskim jezicima i koriste se za najrazličitije svrhe. Oni često mogu izgledati i 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 alata.
Regularni izrazi postoje u različitim dijalektima i aplikacija Power Apps koristi jednu varijantu JavaScript dijalekta. Za uvod u sintaksu pogledajte sintaksa regularnih izraza. Podržani su imenovani podrezultati (ponekad se nazivaju i imenovane grupe za bilježenje):
- Imenovani podrezultati: (?<naziv> ...)
- Imenovane povratne reference: \k<naziv>
U tablici enumeracija Match ranije u ovoj temi, svaka se enumeracija pojavljuje u istom retku kao odgovarajući regularni izraz.
Mogućnosti podudaranja
Ponašanje ovih funkcija možete izmijeniti tako da navedete jednu ili više opcija, koje možete kombinirati pomoću operatora ulančavanja nizova (&).
Enumeracija MatchOptions | Opis | Utjecaj na regularni izraz |
---|---|---|
MatchOptions.BeginsWith | Uzorak se mora podudarati s početkom teksta. | Dodaje ^ na početak regularnog izraza. |
Opcije podudaranja.Dovršeno | Zadana postavka za IsMatch. Uzorak se mora podudarati s cijelim tekstnim nizom, od početka do kraja. | Dodaje ^ na početak i $ na kraj regularnog izraza. |
MatchOptions.Sadrži | Zadana postavka za Match i MatchAll. Uzorak se mora pojaviti negdje u tekstu, ali ne mora biti na njegovom početku ili kraju. | Ne mijenja regularni izraz. |
MatchOptions.EndsWith | Uzorak se mora podudarati s krajem tekstnog niza. | Dodaje $ na kraj regularnog izraza. |
MatchOptions.IgnoreCase | Smatra velika i mala slova identičnima. Prema zadanim postavkama, podudaranje razlikuje velika i mala slova. | Ne mijenja regularni izraz. Ova je opcija ekvivalentna standardnom modifikatoru „i” za regularne izraze. |
MatchOptions.Multiline | Podudaranje u više redaka. | Ne mijenja regularni izraz. Ova je opcija ekvivalentna standardnom modifikatoru „m” za regularne izraze. |
Upotreba MatchAll ekvivalent je korištenju standardnog modifikatora „g” za regularne izraze.
Sintaksa
IsMatch( Tekst;Uzorak [ ; Opcije ] )
- Tekst– obavezno. Tekstni niz koji se ispituje.
- Uzorak – Obavezno. Uzorak koji se ispituje kao tekstni niz. Spajanje unaprijed definiranih uzoraka koje enumeracija Match definira, ili pruža regularni izraz. Uzorak mora biti konstantna formula bez varijabli, izvora podataka ili drugih dinamičkih referenci koje se mijenjaju tijekom pokretanja aplikacije.
- Opcije – Nije obavezno. Kombinacija tekstnog niza od vrijednosti enumeracije MatchOptions. Prema zadanim postavkama, koristi se MatchOptions.Complete.
Podudaranje( Tekst,Uzorak [ ; Opcije ] )
- Tekst– obavezno. Tekstni niz čije se podudaranje ispituje.
- Uzorak – Obavezno. Uzorak čije se podudaranje ispituje kao tekstni niz. Spajanje unaprijed definiranih uzoraka koje enumeracija Match definira, ili pruža regularni izraz. Uzorak mora biti konstantna formula bez varijabli, izvora podataka ili drugih dinamičkih referenci koje se mijenjaju tijekom pokretanja aplikacije.
- Opcije – Nije obavezno. Kombinacija tekstnog niza od vrijednosti enumeracije MatchOptions. Prema zadanim postavkama, koristi se MatchOptions.Contains.
MatchAll( Tekst;Uzorak [ ; Opcije ] )
- Tekst– obavezno. Tekstni niz čije se podudaranje ispituje.
- Uzorak – Obavezno. Uzorak čije se podudaranje ispituje kao tekstni niz. Spajanje unaprijed definiranih uzoraka koje enumeracija Match definira, ili pruža regularni izraz. Uzorak mora biti konstantna formula bez varijabli, izvora podataka ili drugih dinamičkih referenci koje se mijenjaju tijekom pokretanja aplikacije.
- Opcije – Nije obavezno. Kombinacija tekstnog niza od vrijednosti enumeracije MatchOptions. Prema zadanim postavkama, koristi se MatchOptions.Contains.
Primjeri za IsMatch
Obični znakovi
Zamislite da vaša aplikacija sadrži kontrolu Text input nazvanu TextInput1. Korisnik u ovu kontrolu unosi vrijednosti koje će se pohraniti u neku bazu podataka.
Korisnik unosi Hello world u TextInput1.
Formula | Opis | Rezultat |
---|---|---|
IsMatch( TextInput1.Text, "Hello world" ) |
Ispituje odgovara li tačno korisnikov unos nizu „Hello world”. | istinit |
IsMatch( TextInput1.Text, "Good bye" ) |
Ispituje odgovara li tačno korisnikov unos nizu „Good bye”. | lažan |
IsMatch( TextInput1.Text, "hello", Contains ) |
Ispituje sadrži li korisnički unos riječ „hello” (razlikuje velika i mala slova). | lažan |
IsMatch( TextInput1.Text, "hello", Contains & IgnoreCase ) |
Ispituje sadrži li korisnički unos riječ „hello” (ne razlikuje velika i mala slova). | istinit |
Unaprijed definirani uzorci
Formula | Opis | Rezultat |
---|---|---|
IsMatch( "123-45-7890", Digit & Digit & Digit & Hyphen & Digit & Digit & Hyphen & Digit & Digit & Digit & Digit ) |
Odgovara američkom broju zdravstvenog osiguranja | istinit |
IsMatch( "joan@contoso.com", Email ) |
Poredi adresu e-pošte | istinit |
IsMatch( "123.456", MultipleDigits & Period & OptionalDigits ) |
Odgovara slijedu od niza znamenki, točke, a zatim nula ili više znamenki. | istinit |
IsMatch( "123", MultipleDigits & Period & OptionalDigits ) |
Odgovara slijedu od niza znamenki, točke, a zatim nula ili više znamenki. U tekstu koji se poredi ne pojavljuje se točka, pa ovaj uzorak nije podudaran. | lažan |
Regularni izrazi
Formula | Opis | Rezultat |
---|---|---|
IsMatch( "986", "\d+" ) |
Odgovara cijelom broju većem od nule. | istinit |
IsMatch( "1.02", "\d+(\.\d\d)?" ) |
Odgovara pozitivnom iznosu valute. Ako unos sadrži decimalnu točku, unos mora nakon decimalne točke sadržavati i dva numerička znaka. Na primjer, 3.00 je valjano, ali 3.1 nije. | istinit |
IsMatch( "-4.95", "(-)?\d+(\.\d\d)?" ) |
Odgovara pozitivnom ili negativnom iznosu valute. Ako unos sadrži decimalnu točku, unos mora nakon decimalne točke sadržavati i dva numerička znaka. | istinit |
IsMatch( "111-11-1111", "\d{3}-\d{2}-\d{4}" ) |
Odgovara američkom broju zdravstvenog osiguranja. Provjerava format, vrstu i dužinu navedenog polja za unos. Niz koji se ispituje mora sadržavati tri numerička znaka nakon čega slijedi crta, zatim dva numerička znaka, potom crta, a zatim četiri numerička znaka. | istinit |
IsMatch( "111-111-111", "\d{3}-\d{2}-\d{4}" ) |
Isto kao u prethodnom primjeru, ali jedna od crtica nije unesena na dobrom mjestu. | lažan |
IsMatch( "AStrongPasswordNot", "(?!^[0-9]\*$)(?!^[a-zA-Z]\*$)([a-zA-Z0-9]{8,10})" ) |
Provjerava jaku lozinku koja mora sadržavati osam, devet ili 10 znakova, uz najmanje jednu znamenku i najmanje jedan abecedni znak. Niz ne smije sadržavati posebne znakove. | lažan |
Primjeri za Match i MatchAll
Formula | Opis | Rezultat |
---|---|---|
Match( "Bob Jones <bob.jones@contoso.com>", "<(?<email>" & Match.Email & ")>" |
Iz informacija o kontaktu izdvaja samo dio s adresom e-pošte. | { E-pošta: "bob.jones@contoso.com", FullMatch: "<bob.jones@contoso.com>", SubMatches: [ "bob.jones@contoso.com" ], StartMatch: 11 } |
Match( "Bob Jones <InvalidEmailAddress>", "<(?<email>" & Match.Email & ")>" |
Iz informacija o kontaktu izdvaja samo dio s adresom e-pošte. Nije pronađena pravilna adresa (nema znaka @), pa funkcija vraća blank. | prazno |
Match( Language(), "(<language>\w{2})(?:-(?<script>\w{4}))?(?:-(?<region>\w{2}))?" ) |
Izdvaja dijelove s jezikom, pismom i regijom iz jezične oznake koju vraća funkcija Language. Ovi rezultati odnose se na Sjedinjene Države; za više primjera pogledajte dokumentaciju o funkciji Language. Operator (?: grupira znakove ne stvarajući neki drugi podrezultat. | { language: "en", script: blank, region: "US", FullMatch: "en-US", SubMatches: [ "en", "", "US" ], StartMatch: 1 } |
Match( "PT2H1M39S", "PT(?:<hours>\d+)H)?(?:(?<minutes>\d+)M)?(?:(?<seconds>\d+)S)?" ) |
Izdvaja sate, minute i sekunde iz neke ISO 8601 vrijednosti trajanja. Izdvojeni brojevi i dalje su u tekstnom nizu; upotrijebite funkciju Value da biste ga pretvorili u broj prije nego što se na njemu izvedu matematičke operacije. | { hours: "2", minutes: "1", seconds: "39", FullMatch: "PT2H1M39S", SubMatches:["2","1","39"], StartMatch: 1 } |
Pogledajmo ovaj posljednji primjer. Ako ovaj niz želite pretvoriti u vrijednost datum/vrijeme pomoću funkcije Time, morate pojedinačno proslijediti imenovane podrezultate. Da biste to učinili, možete upotrijebiti funkciju With koja djeluje na zapis vraćen iz funkcije Match:
With(
Match( "PT2H1M39S", "PT(?:(?<hours>\d+)H)?(?:(?<minutes>\d+)M)?(?:(?<seconds>\d+)S)?" ),
Time( Value( hours ), Value( minutes ), Value( seconds ) )
)
U ovim primjerima dodajte kontrolu Button, postavite njegovo svojstvo OnSelect na ovu formulu, a zatim odaberite gumb:
Set( pangram, "The quick brown fox jumps over the lazy dog." )
Formula | Opis | Rezultat |
---|---|---|
Match( pangram, "THE", IgnoreCase ) |
Pronađite sva podudaranja riječi „THE” u tekstnom nizu smještenom u varijablu pangram. Niz sadrži dva podudaranja, ali vraća samo prvo jer koristite funkciju Match, a ne MatchAll. Stupac SubMatches prazan je jer nisu definirani podrezultati. | { FullMatch: "The", SubMatches: [ ], StartMatch: 32 } |
MatchAll( pangram, "the" ) |
Pronađite sva podudaranja riječi „the” u tekstnom nizu smještenom u varijablu pangram. Ovaj test razlikuje velika i mala slova, pa je pronađena samo druga instanca riječi „the”. Stupac SubMatches prazan je jer nisu definirani podrezultati. | |
MatchAll( pangram, "the", IgnoreCase ) |
Pronađite sva podudaranja riječi „the” u tekstnom nizu smještenom u varijablu pangram. U ovom slučaju, test ne razlikuje velika i mala slova, pa se pronalaze oba slučaja riječi. Stupac SubMatches prazan je jer nisu definirani podrezultati. | |
MatchAll( pangram, "\b\wo\w\b" ) |
Pronalazi sve riječi s tri slova koje imaju „o” u sredini. Imajte na umu da je riječ „brown” isključena jer nije riječ s tri slova i, prema tome, ne podudara se s „\b” (granica riječi). | |
Match( pangram, "\b\wo\w\b\s\*(?<between>\w.+\w)\s\*\b\wo\w\b" ) |
Odgovara svim znakovima između „fox” i „dog”. | { between: "jumps over the lazy", FullMatch: "fox jumps over the lazy dog", SubMatches: [ "jumps over the lazy" ], StartMatch: 17 } |
Da biste vidjeli rezultate funkcije MatchAll u nekoj galeriji:
Na prazan ekran umetnite praznu okomitu kontrolu Gallery.
Postavite svojstvo Items galerije na MatchAll( pangram, "\w+" ) ili MatchAll( pangram, MultipleLetters ).
Odaberite „Dodaj stavku iz kartice Umetni” na sredini kontrole te galerije kako biste odabrali predložak galerije.
Dodajte kontrolu Label predlošku galerije.
Postavite svojstvo Text te oznake na ThisItem.FullMatch.
Gallery se ispunjava svim riječima iz našeg primjera teksta. Promijenite predložak galerije i kontrolu oznake kako biste vidjeli sve riječi na jednom zaslonu.