Dijeli putem


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 za pangram.
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 s IgnoreCase.
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). MatchAll za pangram s b, wo, w i b.
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:

  1. Na prazan ekran umetnite praznu okomitu kontrolu Gallery.

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

    Galerija stavki.

  3. Odaberite „Dodaj stavku iz kartice Umetni” na sredini kontrole te galerije kako biste odabrali predložak galerije.

  4. Dodajte kontrolu Label predlošku galerije.

  5. 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.

    Svojstvo teksta.