Dijeli putem


Funkcije IsMatch, Match i MatchAll

Odnosi se na: Aplikacije od gotovih gradivnih elemenata CLI aplikacije stvorene prema Power Platform 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.

Funkcija Match vraća zapis podataka za prvo pronađeno podudaranje, a MatchAll vraća tablicu zapisa za svako pronađeno podudaranje. Zapis ili zapisi sadrže:

Column Tip Opis
imenovani podrezultat ili podrezultati 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.
FullMatch Text Cijeli tekstni niz koji je podudaren.
StartMatch Broj Položaj početka podudaranja u ulaznom tekstnom nizu. Prvi znak niza vraća broj 1.
SubMatches 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 koja ne razlikuju velika i mala slova.
  • Funkcija IsMatch traži podudaranje cijelog tekstnog niza (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 to ne čini. Funkcija Match vraća blank ako se ne nađe podudaranje koje se može ispitati funkcijom IsBlank. Funkcija MatchAll vraća praznu tablicu ako se ne nađe podudaranje koje se može ispitati funkcijom 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 te elemente pomoću operatora ulančavanja niza&. Na primjer, "abc" & Digit & "\s+"je valjani uzorak koji odgovara znakovima "a", "b" i " c", nakon čega slijedi znamenka od 0 do 9, nakon čega slijedi najmanje 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. Koristite operator ulančavanja niza& da biste kombinirali vlastite tekstualne nizove s članovima enum-a Podudaranje :

Enumeracija Match Opis Regularni izraz
Any Odgovara bilo kojem znaku. .
Comma Odgovara zarezu. ,
Digit Odgovara jednoj znamenki (od „0” do „9”). \d
Email Odgovara adresi e-pošte koja sadrži simbol „at” ("@") i naziv domene koji sadrži točku (".") .+\@.+\\.[^\\.]{2,}
Hyphen Odgovara crtici. \-
LeftParen Odgovara lijevoj običnoj zagradi „(”. \(
Letter Odgovara slovu. \p{L}
MultipleDigits Odgovara jednoj ili više znamenki. \d+
MultipleLetters Odgovara jednom ili više slova. \p{L}+
MultipleNonSpaces Odgovara jednom ili više znakova koji ne dodaju bjelinu (ne razmak, tabulator, niti novi redak). \S+
MultipleSpaces Odgovara jednom ili više znakova koji dodaju bjelinu (razmak, tabulator ili novi redak). \s+
NonSpace Odgovara pojedinačnom znaku koji ne dodaje razmak. \S
OptionalDigits Odgovara nula, jednoj ili više znamenki. \d*
OptionalLetters Odgovara nula, jednoj ili više slova. \p{L}*
OptionalNonSpaces Odgovara nula, jednom ili više znakova koji ne dodaju bjelinu. \S*
OptionalSpaces Odgovara nula, jednom ili više znakova koji dodaju bjelinu. \s*
Period Odgovara točki („.”). \.
RightParen Odgovara desnoj običnoj zagradi „)”. \)
Space Odgovara znaku koji dodaje bjelinu. \s
Tabulator Odgovara znaku kartice. \t

Na primjer, uzorak "A" i MultipleDigits podudarat će se sa slovom "A", nakon čega 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 navođenjem jedne ili više mogućnosti koje možete kombinirati pomoću operatora ulančavanja niza (&).

Enumeracija MatchOptions Opis Utjecaj na regularni izraz
MatchOptions.BegWith Uzorak se mora podudarati s početkom teksta. Dodaje ^ na početak regularnog izraza.
MatchOptions.Complete 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.Contains 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( Text, Pattern [, Options ] )

  • Text – obavezno. Tekstni niz koji se ispituje.
  • Pattern – obavezno. Uzorak koji se ispituje kao tekstni niz. Spajanje unaprijed definiranih uzoraka koje enumeracija Match definira, ili pruža regularni izraz. Pattern mora biti formula s konstantom bez ikakvih varijabli, izvora podataka ili drugih dinamičkih referenci koje se mijenjaju tijekom rada aplikacije.
  • Options – neobavezno. Kombinacija tekstnog niza od vrijednosti enumeracije MatchOptions. Prema zadanim postavkama, koristi se MatchOptions.Complete.

Match( Text, Pattern [, Options ] )

  • Text – obavezno. Tekstni niz čije se podudaranje ispituje.
  • Pattern – obavezno. Uzorak čije se podudaranje ispituje kao tekstni niz. Spajanje unaprijed definiranih uzoraka koje enumeracija Match definira, ili pruža regularni izraz. Pattern mora biti formula s konstantom bez ikakvih varijabli, izvora podataka ili drugih dinamičkih referenci koje se mijenjaju tijekom rada aplikacije.
  • Options – neobavezno. Kombinacija tekstnog niza od vrijednosti enumeracije MatchOptions. Prema zadanim postavkama, koristi se MatchOptions.Contains.

MatchAll( Text, Pattern [, Options ] )

  • Text – obavezno. Tekstni niz čije se podudaranje ispituje.
  • Pattern – obavezno. Uzorak čije se podudaranje ispituje kao tekstni niz. Spajanje unaprijed definiranih uzoraka koje enumeracija Match definira, ili pruža regularni izraz. Pattern mora biti formula s konstantom bez ikakvih varijabli, izvora podataka ili drugih dinamičkih referenci koje se mijenjaju tijekom rada aplikacije.
  • Options – neobavezno. 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”. true
IsMatch( TextInput1.Text, "Good bye" ) Ispituje odgovara li tačno korisnikov unos nizu „Good bye”. false
IsMatch( TextInput1.Text, "hello", Contains ) Ispituje sadrži li korisnički unos riječ „hello” (razlikuje velika i mala slova). false
IsMatch( TextInput1.Text, "hello", Contains & IgnoreCase ) Ispituje sadrži li korisnički unos riječ „hello” (ne razlikuje velika i mala slova). true

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 true
IsMatch( "joan@contoso.com", Email ) Poredi adresu e-pošte true
IsMatch( "123.456", MultipleDigits & Period & OptionalDigits ) Odgovara slijedu od niza znamenki, točke, a zatim nula ili više znamenki. true
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. false

Regularni izrazi

Formula Opis Rezultat
IsMatch( "986", "\d+" ) Odgovara cijelom broju većem od nule. true
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. true
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. true
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. true
IsMatch( "111-111-111", "\d{3}-\d{2}-\d{4}" ) Isto kao u prethodnom primjeru, ali jedna od crtica nije unesena na dobrom mjestu. false
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. false

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.