Funkcie IsMatch, Match a MatchAll
Platí pre: aplikácie plátna aplikácie riadené modelom Power Pages Power Platform CLI
Testuje zhodu alebo extrahuje časti textového reťazca na základe vzoru.
Popis
Funkcia IsMatch testuje, či sa textový reťazec zhoduje so vzorom, ktorý sa môže skladať z obyčajných znakov, preddefinovaného vzoru alebo regulárneho výrazu. Funkcie Match a MatchAll vrátia to, čo sa zhoduje, vrátane čiastkových zhôd.
Pomocou funkcie IsMatch môžete overiť, či používateľ zadal správny text do ovládacieho prvku Vstup textu. Môžete napríklad overiť, či používateľ zadal platnú e-mailovú adresu predtým, než sa výsledok uloží do vášho zdroja údajov. Ak zadaný text nespĺňa vaše kritériá, pridajte ďalšie ovládacie prvky, ktorý používateľa vyzvú, aby zadaný text opravil.
Použitie funkciu Match na extrahovanie prvého textového reťazca, ktorý zodpovedá vzoru a MatchAll na extrahovanie všetkých textových reťazcov, ktoré sa zhodujú. Môžete tiež extrahovať čiastkové zhody na analýzu zložitých reťazcov.
Match vráti záznam informácií o prvej nájdenej zhode a MatchAll vráti tabuľku záznamov pre každú nájdenú zhodu. Záznam alebo záznamy obsahujú:
Column | Type | Description |
---|---|---|
pomenovaná vedľajšia zhoda alebo vedľajšie zhody | SMS správa | Každá pomenovaná čiastková zhoda bude mať svoj vlastný stĺpec. Vytvorte pomenovanú čiastkovú zhodu pomocou (?<name>...) v regulárnom výraze. Ak má pomenovaná čiastková zhoda rovnaký názov ako jeden z preddefinovaných stĺpcov (nižšie), má prednosť čiastková zhoda a vygeneruje sa varovanie. Ak sa chcete tomuto varovaniu vyhnúť, premenujte čiastkovú zhodu. |
FullMatch | Text | Celý textový reťazec, ktorý sa zhodoval. |
StartMatch | Číslo | Počiatočná pozícia zhody v rámci vstupného textového reťazca. Prvý znak reťazca vráti 1. |
Podzápasy | Textová tabuľka s jedným stĺpcom (stĺpec Hodnota) | Tabuľka pomenovaných a nemenovaných čiastkových zhôd v poradí, v akom sa vyskytujú v regulárnom výraze. Vo všeobecnosti sa pomenované čiastkové zhody ľahšie používajú a odporúčame vám ich používať. Použite funkciu ForAll alebo funkcie Last( FirstN( ... ) ) na prácu s jednotlivými čiastkovými zhodami. Ak v regulárnom výraze nie sú definované žiadne čiastkové zhody, táto tabuľka bude prítomná, ale prázdna. |
Tieto funkcie podporujú MatchOptions. Štandardne:
- Tieto funkcie vykonávajú porovnávanie malých a veľkých písmen. Použite MatchOptions.IgnoreCase na vykonanie zhôd bez rozlišovania malých a veľkých písmen.
- IsMatch vyhovuje celému textovému reťazcu (Complete MatchOption), zatiaľ čo Match a MatchAll vyhľadajte zhodu kdekoľvek v textovom reťazci (Obsahuje MatchOption). Použite nastavenia Complete, Contains, BeginsWith alebo EndsWith podľa svojich potrieb.
IsMatch vráti pravda ak sa textový reťazec zhoduje so vzorom alebo false ak sa nezhoduje 't. Zhoda vráti prázdnu ak sa nenájde žiadna zhoda, ktorú je možné otestovať pomocou IsPrázdne funkciu. MatchAll vráti prázdnu tabuľku, ak sa nenájde žiadna zhoda, ktorú možno otestovať pomocou funkcie IsEmpty .
Ak používate funkciu MatchAll na rozdelenie textového reťazca, zvážte použitie funkcie Split, ktorá je jednoduchšia a rýchlejšia.
Vzory
Základom používania týchto funkcií je popísanie vzoru, s ktorým sa má reťazec zhodovať. Vzor v textovom reťazci sa popisuje ako kombinácia:
- obyčajných znakov, napríklad „abc“ alebo „123“,
- preddefinovaných vzorov, napríklad Letter (písmeno), MultipleDigits (viacero číslic) alebo Email, (tieto vzory sú definované v zozname zhôd),
- regulárnych výrazov, napríklad „\d+\s+\d+“ alebo „[a-z]+“.
Skombinujte tieto prvky pomocou operátora zreťazenia reťazcov &. Napríklad "abc" & Číslica & "\s+" je platný vzor, ktorý sa zhoduje so znakmi "a", "b" a "c", za ktorými nasleduje číslica od 0 do 9, za ktorou nasleduje aspoň jeden znak medzery.
Bežné znaky
Najjednoduchším vzorom je postupnosť bežných znakov, ktoré sa majú presne zhodovať.
Napríklad pri použití s IsMatch, reťazec „Ahoj“ zodpovedá presne vzoru „Ahoj“. O nič viac a o nič menej. Reťazec „ahoj!“ sa nezhoduje so vzorom z dôvodu výkričníka na konci a písmeno „a“ na začiatku je na rozdiel od vzoru malé. (Spôsoby, ako toto správanie upraviť, nájdete v časti Možnosti zhody.)
V jazyku vzoru sú niektoré znaky vyhradené pre zvláštne účely. Ak chcete použiť tieto znaky, buď pred znak napíšte \ (opačná lomka) na znamenie, že sa má znak brať doslova, prípadne použite niektorý z preddefinovaných vzorov opisovaných v tejto téme ďalej. Špeciálne znaky sú uvedené v tejto tabuľke:
Špeciálny znak | Description |
---|---|
. | bodka alebo čiarka |
? | otáznik |
* | hviezdička |
+ | Plus |
( ) | zátvorky |
[ ] | hranaté zátvorky |
{ } | zložené zátvorky |
^ | strieška |
$ | znak dolára |
| | zvislá čiara alebo rúra |
\ | spätná lomka |
Môžete napríklad nájsť zhodu „Ahoj?“ pomocou vzoru „Ahoj\?“ s opačnou lomkou pred otáznikom.
Preddefinované vzory
Preddefinované vzory poskytujú jednoduchý spôsob, ako nájsť zhodu buď s jedným zo skupiny znakov alebo s postupnosťou viacerých znakov. Použite operátor zreťazenia reťazcov & na skombinovanie vlastných textových reťazcov s členmi zhody enumerácia:
Zoznam zhôd | Popis | Regulárny výraz |
---|---|---|
Akékoľvek | Skontroluje zhodu s ľubovoľným znakom. | . |
Čiarka | Skontroluje zhodu s čiarkou. | , |
Číslica | Skontroluje zhodu s jednou číslicou (0 až 9). | \d |
Skontroluje zhodu s e-mailovou adresou, ktorá obsahuje symbol „zavináča“ („@“) a názov domény obsahujúci bodku („.“) | .+\@.+\\.[^\\.]{2,} |
|
Spojovník | Skontroluje zhodu so spojovníkom. | \- |
LeftParen | Skontroluje zhodu s ľavou zátvorkou „(“. | \( |
List | Skontroluje zhodu s písmenom. | \p{L} |
Viacnásobné číslice | Skontroluje zhodu s viacerými číslicami. | \d+ |
Viac písmen | Skontroluje zhodu s viacerými písmenami. | \p{L}+ |
MultipleNonSpaces | Skontroluje zhodu s jedným alebo viacerými znakmi, ktoré nepridávajú prázdny znak (nemedzera, tabulátor, nový riadok). | \S+ |
MultipleSpaces | Skontroluje zhodu s jedným alebo viacerými znakmi, ktoré pridávajú prázdny znak (medzera, tabulátor alebo nový riadok). | \s+ |
NonSpace | Skontroluje zhodu s jedným znakom, ktorý nepridáva prázdny znak. | \S |
Voliteľné číslice | Skontroluje zhodu so žiadnou, jednou alebo viacerými číslicami. | \d* |
Voliteľné písmená | Skontroluje zhodu so žiadnym, jedným alebo viacerými písmenami. | \p{L}* |
VoliteľnéNonSpaces | Skontroluje zhodu s žiadnym, jedným alebo viacerými znakmi, ktoré nepridávajú prázdny znak. | \S* |
Voliteľné priestory | Skontroluje zhodu so žiadnym, jedným alebo viacerými znakmi, ktoré pridávajú prázdny znak. | \s* |
Obdobie | Skontroluje zhodu s bodkou (.). | \. |
RightParen | Skontroluje zhodu s pravou zátvorkou „)“. | \) |
Priestor | Skontroluje zhodu so znakom, ktorý pridáva prázdny znak. | \s |
Tab | Skontroluje zhodu so znakom tabulátora. | \t |
Napríklad vzor "A" a viacčíslic sa bude zhodovať s písmenom „A“, za ktorým nasleduje jedna alebo viac číslic.
Regulárne výrazy
Vzor, ktorý tieto funkcie používajú, je regulárny výraz. Na vytváranie regulárnych výrazov pomáhajú obyčajné znaky a preddefinované vzory, ktoré sú popísané vyššie v tejto téme.
Regulárne výrazy sú veľmi účinné, dostupné v rôznych programovacích jazykoch a používajú sa na najrôznejšie účely. Často tiež môžu vyzerať ako náhodná sekvencia interpunkčných znamienok. Tento článok neopisuje všetky aspekty regulárnych výrazov, ale môže vám pomôcť veľké množstvo informácii, návodov a nástrojov, ktoré nájdete na internete.
Regulárne výrazy majú rôzne dialekty a služba Power Apps používa variant dialektu JavaScript. Pozrite si syntax regulárneho výrazu pre úvod do syntaxe. Podporované sú pomenované čiastkové zhody (niekedy nazývané aj skupiny zachytávania):
- Pomenované čiastkové zhody: (?<názov> ...)
- Pomenované spätné referencie: \k<názov>
V tabuľke zoznamu Zhoda uvedenej vyššie v tejto téme, sa každý zoznam sa objaví v rovnakom riadku ako jeho zodpovedajúci regulárny výraz.
Možnosti zhody
Správanie týchto funkcií môžete upraviť zadaním jednej alebo viacerých možností, ktoré môžete skombinovať pomocou operátora zreťazenia reťazcov ( &).
Zoznam možností zhody | Description | Vplyv na regulárny výraz |
---|---|---|
MatchOptions.BeginsWith | Vzor sa musí zhodovať od začiatku textu. | Pridá ^ na začiatok regulárneho výrazu. |
MatchOptions.Complete | Predvolené nastavenie pre IsMatch. Vzor sa musí zhodovať s celým reťazcom textu od začiatku do konca. | Pridá ^ na začiatok a $ na koniec regulárneho výrazu. |
MatchOptions.Contains | Predvolené pre Match a MatchAll. Vzor sa musí nachádzať niekde v texte, ale nemusí byť na začiatku ani na konci. | Nezmení regulárny výraz. |
MatchOptions.EndsWith | Vzor sa musí zhodovať s koncom reťazca textu. | Pridá $ na koniec regulárneho výrazu. |
MatchOptions.IgnoreCase | Zaobchádza s veľkými a malými písmenami rovnako. V predvolenom nastavení sa veľkosť písmen rozlišuje. | Nezmení regulárny výraz. Táto možnosť je ekvivalentom štandardného modifikátora „i“ pre regulárne výrazy. |
MatchOptions.Multiline | Kontroluje zhodu na viacerých riadkoch. | Nezmení regulárny výraz. Táto možnosť je ekvivalentom štandardného modifikátora „m“ pre regulárne výrazy. |
Použitie MatchAll je ekvivalentné s použitím štandardného modifikátora „g“ pre regulárne výrazy.
Syntax
IsMatch ( Text, Vzor [, Možnosti ])
- Text – povinné. Textový reťazec, ktorý sa má otestovať.
- Vzor – Povinné. Vzor na otestovanie, napríklad textový reťazec. Zreťazte preddefinované vzory, ktoré definuje zoznam zhôd, alebo zadajte regulárny výraz. Vzor musí byť konštantný vzorec bez akýchkoľvek premenných, zdrojov údajov alebo iných dynamických odkazov, ktoré sa menia počas behu aplikácie.
- Možnosti – Voliteľné. Textový reťazec s kombináciou hodnôt zo zoznamu MatchOptions. V predvolenom nastavení sa používa MatchOptions.Complete.
Zápas ( Text, Vzor [, Možnosti ])
- Text – povinné. Textový reťazec, ktorý sa má zhodovať.
- Vzor – Povinné. Vzor na otestovanie zhody, napríklad textový reťazec. Zreťazte preddefinované vzory, ktoré definuje zoznam zhôd, alebo zadajte regulárny výraz. Vzor musí byť konštantný vzorec bez akýchkoľvek premenných, zdrojov údajov alebo iných dynamických odkazov, ktoré sa menia počas behu aplikácie.
- Možnosti – Voliteľné. Textový reťazec s kombináciou hodnôt zo zoznamu MatchOptions. V predvolenom nastavení sa používa MatchOptions.Contains.
MatchAll ( Text, Vzor [, Možnosti ])
- Text – povinné. Textový reťazec, ktorý sa má zhodovať.
- Vzor – Povinné. Vzor na otestovanie zhody, napríklad textový reťazec. Zreťazte preddefinované vzory, ktoré definuje zoznam zhôd, alebo zadajte regulárny výraz. Vzor musí byť konštantný vzorec bez akýchkoľvek premenných, zdrojov údajov alebo iných dynamických odkazov, ktoré sa menia počas behu aplikácie.
- Možnosti – Voliteľné. Textový reťazec s kombináciou hodnôt zo zoznamu MatchOptions. V predvolenom nastavení sa používa MatchOptions.Contains.
Príklady IsMatch
Bežné znaky
Predstavte si, že vaša aplikácia obsahuje ovládací prvok Vstup textu s názvom VstupTextu1. Používateľ zadá do tohto ovládacieho prvku hodnoty, ktoré sa majú uložiť do databázy.
Používateľ do prvku VstupTextu1 napíše Hello world.
Vzorec | Popis | Výsledok |
---|---|---|
IsMatch( TextInput1.Text, "Hello world" ) |
Skontroluje, či sa zadanie používateľa presne zhoduje s textom „Hello world“. | pravda |
IsMatch( TextInput1.Text, "Good bye" ) |
Skontroluje, či sa zadanie používateľa presne zhoduje s textom „Good bye“. | falošný |
IsMatch( TextInput1.Text, "hello", Contains ) |
Skontroluje, či zadanie používateľa obsahuje slovo „hello“ (s rozlíšením veľkosti písmen). | falošný |
IsMatch( TextInput1.Text, "hello", Contains & IgnoreCase ) |
Skontroluje, či zadanie používateľa obsahuje slovo „hello“ (bez rozlíšenia veľkosti písmen). | pravda |
Preddefinované vzory
Vzorec | Popis | Výsledok |
---|---|---|
IsMatch( "123-45-7890", Digit & Digit & Digit & Hyphen & Digit & Digit & Hyphen & Digit & Digit & Digit & Digit ) |
Zodpovedá číslu sociálneho poistenia v USA | pravda |
IsMatch( "joan@contoso.com", Email ) |
Zodpovedá e-mailovej adrese | pravda |
IsMatch( "123.456", MultipleDigits & Period & OptionalDigits ) |
Zodpovedá postupnosti číslic nasledovanej bodkou a potom žiadnou alebo viacerými číslicami. | pravda |
IsMatch( "123", MultipleDigits & Period & OptionalDigits ) |
Zodpovedá postupnosti číslic nasledovanej bodkou a potom žiadnou alebo viacerými číslicami. Bodka sa v texte na určenie zhody nenachádza, preto sa tento vzor nezhoduje. | falošný |
Regulárne výrazy
Vzorec | Popis | Výsledok |
---|---|---|
IsMatch( "986", "\d+" ) |
Zodpovedá celému číslu väčšiemu než nula. | pravda |
IsMatch( "1.02", "\d+(\.\d\d)?" ) |
Zodpovedá kladnej peňažnej čiastke. Ak zadanie obsahuje desatinnú bodku, musí obsahovať tiež 2 číselné znaky za desatinnou bodkou. Napríklad 3.00 je platné, ale 3.1 nie je. | pravda |
IsMatch( "-4.95", "(-)?\d+(\.\d\d)?" ) |
Zodpovedá kladnej alebo zápornej peňažnej čiastke. Ak zadanie obsahuje desatinnú bodku, musí obsahovať tiež 2 číselné znaky za desatinnou bodkou. | pravda |
IsMatch( "111-11-1111", "\d{3}-\d{2}-\d{4}" ) |
Zodpovedá číslu sociálneho poistenia v USA. Overí formát, typ a dĺžku zadaného poľa. Reťazec, ktorý sa má zhodovať, musí obsahovať tri číselné znaky, po ktorých nasleduje spojovník a potom dva číselné znaky, po ktorých nasleduje spojovník a ďalšie štyri číselné znaky. | pravda |
IsMatch( "111-111-111", "\d{3}-\d{2}-\d{4}" ) |
Rovnaké ako predchádzajúci príklad, ale jeden zo spojovníkov nie je v zadaní na správnom mieste. | falošný |
IsMatch( "AStrongPasswordNot", "(?!^[0-9]\*$)(?!^[a-zA-Z]\*$)([a-zA-Z0-9]{8,10})" ) |
Overí silné heslo, ktoré musí obsahovať osem, deväť alebo 10 znakov a okrem toho aspoň jednu číslicu a aspoň jeden znak abecedy. Reťazec nesmie obsahovať špeciálne znaky. | falošný |
Príklady pre funkcie Match a MatchAll
Vzorec | Popis | Výsledok |
---|---|---|
Match( "Bob Jones <bob.jones@contoso.com>", "<(?<email>" & Match.Email & ")>" |
Extrahuje iba e-mailovú časť kontaktných informácií. | { email: „bob.jones@contoso.com“, FullMatch: „<bob.jones@contoso.com>“, SubMatches: [ „bob.jones@contoso.com“ ], StartMatch: 11 } |
Match( "Bob Jones <InvalidEmailAddress>", "<(?<email>" & Match.Email & ")>" |
Extrahuje iba e-mailovú časť kontaktných informácií. Nenašla sa žiadna platná adresa (neexistuje znak @), takže funkcia vráti blank hodnotu. | prázdna |
Match( Language(), "(<language>\w{2})(?:-(?<script>\w{4}))?(?:-(?<region>\w{2}))?" ) |
Extrahuje časti jazyk, skript a oblasť značky jazyka, ktoré vracia funkcia Language. Tieto výsledky odrážajú USA; pozri dokumentáciu k funkcii Language pre viac príkladov. Operátor (?: zoskupuje znaky bez vytvorenia ďalšej čiastočnej zhody. | { 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)?" ) |
Extrahuje hodiny, minúty a sekundy z hodnoty trvania ISO 8601. Extrahované čísla sú stále v textovom reťazci; použite funkciu Value, ktorá ho prevedie na číslo predtým, ako sa na ňom vykonajú matematické operácie. | { hours: "2", minutes: "1", seconds: "39", FullMatch: "PT2H1M39S", SubMatches:["2","1","39"], StartMatch: 1 } |
Poďme sa podrobne pozrieť na posledný príklad. Ak chcete tento reťazec previesť na hodnotu dátumu a času pomocou funkcie Time, musíte pomenované čiastočné zhody odovzdať jednotlivo. Na tento účel môžete použiť funkciu With, ktorá pracuje so záznamom, ktorý vracia funkcia Match:
With(
Match( "PT2H1M39S", "PT(?:(?<hours>\d+)H)?(?:(?<minutes>\d+)M)?(?:(?<seconds>\d+)S)?" ),
Time( Value( hours ), Value( minutes ), Value( seconds ) )
)
Pre tieto príklady pridajte ovládací prvok Tlačidlo, nastavte jeho vlastnosť OnSelect podľa tohto vzorca a potom vyberte tlačidlo:
Set( pangram, "The quick brown fox jumps over the lazy dog." )
Vzorec | Popis | Výsledok |
---|---|---|
Match( pangram, "THE", IgnoreCase ) |
Nájsť všetky zhody „THE“ v textovom reťazci, ktorý obsahuje premenná pangram. Reťazec obsahuje dve zhody, ale vracia sa iba prvá, pretože používate funkciu Match a nie MatchAll. Stĺpec SubMatches je prázdny, pretože neboli definované žiadne čiastkové zhody. | { FullMatch: "The", SubMatches: [ ], StartMatch: 32 } |
MatchAll( pangram, "the" ) |
Nájsť všetky zhody „the“ v textovom reťazci, ktorý obsahuje premenná pangram. Pri teste sa rozlišujú malé a veľké písmená, takže sa nájde iba druhý prípad „the“. Stĺpec SubMatches je prázdny, pretože neboli definované žiadne čiastkové zhody. | |
MatchAll( pangram, "the", IgnoreCase ) |
Nájsť všetky zhody „the“ v textovom reťazci, ktorý obsahuje premenná pangram. V tomto prípade sa pri teste nerozlišujú malé a veľké písmená, takže sa nájdu obidva výskyty slova. Stĺpec SubMatches je prázdny, pretože neboli definované žiadne čiastkové zhody. | |
MatchAll( pangram, "\b\wo\w\b" ) |
Nájde všetky trojpísmenové slová s písmenom „o“ v strede. Všimnite si, že výraz „brown“ je vylúčený, pretože nejde o trojpísmenné slovo, a preto nezodpovedá znaku „\ b“ (hranice slova). | |
Match( pangram, "\b\wo\w\b\s\*(?<between>\w.+\w)\s\*\b\wo\w\b" ) |
Zhodou budú všetky znaky medzi slovami „fox“ a „dog. | { between: "jumps over the lazy", FullMatch: "fox jumps over the lazy dog", SubMatches: [ "jumps over the lazy" ], StartMatch: 17 } |
Ak chcete vidieť výsledky funkcie MatchAll v galérii:
Na prázdnu obrazovku vložte prázdny vertikálny ovládací prvok Galéria.
Nastavte vlastnosť Items galérie na MatchAll( pangram, "\w+" ) alebo MatchAll( pangram, MultipleLetters ).
Vyberte „Pridať položku z karty Vložiť“ v strede ovládacieho prvku galérie a vyberte šablónu galérie.
Do šablóny galérie pridajte ovládací prvok Označenie.
Nastavte vlastnosť Text označenia na ThisItem.FullMatch:
Galéria je vyplnená každým slovom v našom príklade textu. Zmeňte veľkosť šablóny galérie a ovládacieho prvku označenia, aby ste na jednej obrazovke videli všetky slová.