Funkcijas IsMatch, Match un MatchAll
Attiecas uz: Audekla programmām Modeļa vadītas programmas Power Pages Power Platform CLI
Pārbauda atbilstību vai izvelk teksta virknes daļas, pamatojoties uz shēmu.
Apraksts
Funkcija IsMatch pārbauda, vai teksta virkne saskan ar shēmu, kas var sastāvēt no parastām rakstzīmēm, iepriekš definētam shēmām vai regulāras izteiksmes. Match un MatchAll funkcijas atgriež to, kas ir saskaņots, ieskaitot apakšatbilstības.
Izmantojiet IsMatch, lai validētu to, ko lietotājs ir ierakstījis Text input vadīklā. Piemēram, varat pārbaudīt, vai lietotājs ir ievadījis derīgu e-pasta adresi, pirms rezultāts tiek saglabāts datu avotā. Ja ievadne neatbilst jūsu kritērijiem, pievienojiet citas vadīklas, kas piedāvā lietotājam labot ierakstu.
Izmantojiet Match, lai izvilktu pirmo teksta virkni, kas atbilst shēmai, un MatchAll, lai izvilktu visas teksta virknes, kas atbilst. Varat arī izvilkt apakšatbilstības, lai parsētu sarežģītas virknes.
Funkcija Match atgriež informācijas ierakstu par pirmo atrasto atbilstību, un funkcija MatchAll atgriež ierakstu tabulu par katru atrasto atbilstību. Ieraksts vai ieraksti satur:
Column | Tipi | Apraksts |
---|---|---|
nosauktās apakšatbilstības vai apakšatbilstības | Īsziņu | Katrai nodēvētajai apakšatbilstībai būs pašai sava kolonna. Izveidojiet nodēvētu apakšatbilstību, izmantojot (?<nosaukums>...) regulārā izteiksmē. Ja nodēvētajai apakšatbilstībai ir tāds pats nosaukums kā vienai no iepriekš definētajām kolonnām (zemāk), apakšatbilstībai tiek piešķirta prioritāte un tiek ģenerēts brīdinājums. Lai izvairītos no šī brīdinājuma, pārdēvējiet apakšatbilstību. |
Pilna spēle | Teksts | Visa teksta virkne, kurai bija atbilstība. |
StartMatch | Numurs | Atbilstības sākuma pozīcija ievades teksta virknē. Virknes pirmā rakstzīme atgriež 1. |
Apakšspēles | Teksta tabula ar vienu kolonnu (kolonna Vērtība) | Nodēvētu un nenodēvētu apakšatbilstību tabula secībā, kādā tās parādās regulārā izteiksmē. Parasti ir vieglāk strādāt ar nodēvētām apakšatbilstībām, un tas ir ieteicams. Izmantojiet funkciju ForAll vai Last( FirstN( ... ) ) funkcijas, lai strādātu ar atsevišķu apakšatbilstību. Ja regulārā izteiksmē nav definētas apakšatbilstības, šī tabula būs klātesoša, bet tukša. |
Šīs funkcijas atbalsta MatchOptions. Pēc noklusējuma:
- Šīs funkcijas veic reģistrjutīgu atbilstību. Izmantojiet MatchOptions.IgnoreCase , lai veiktu reģistrjutīgas atbilstības.
- IsMatch atbilst visai teksta virknei (Complete MatchOption), savukārt Match un MatchAll meklē atbilstību jebkurā vietā teksta virknē (Satur MatchOption). Izmantojiet Pabeigts, Satur, BeginsWith vai EndsWith atbilstoši jūsu scenārijam.
IsMatch atgriež vērtību true , ja teksta virkne atbilst modelim, vai false , ja tā neatbilst rakstam. Atbilstība atgriež tukšu , ja nav atrasta atbilstība, ko var pārbaudīt ar funkciju IsBlank . MatchAll atgriež tukšu tabulu, ja nav atrasta atbilstība, ko var pārbaudīt ar funkciju IsEmpty .
Ja izmantojat MatchAll, lai sadalītu teksta virkni, apsveriet iespēju izmantot funkciju Split, kura ir vieglāk izmantojama un ātrāka.
Shēmas
Šo funkciju lietošanas atslēga ir saskaņojamās shēmas aprakstīšanā. Jūs aprakstāt shēmu teksta virknē kā kombināciju, ko veido:
- Parastas rakstzīmes, piemēram, "abc" vai "123".
- Iepriekš definētas shēmas, piemēram, Letter, MultipleDigits vai Email. (Uzskaitījums Match definē šīs shēmas.)
- Regulāru izteiksmju kodi, piemēram, "\d+\s+\d+" vai "[a-z]+".
Apvienojiet šos elementus, izmantojot virknes konkatenācijas operatoru &. Piemēram, "abc" &; Digit &; "\s+" ir derīgs modelis, kas atbilst rakstzīmēm "a", "b" un "c", kam seko cipars no 0 līdz 9, kam seko vismaz viena atstarpes rakstzīme.
Parastas rakstzīmes
Vienkāršākā shēma ir parasto rakstzīmju secība, kurai ir jābūt ar precīzu atbilsmi.
Piemēram, izmantojot kopā ar funkciju IsMatch, virkne "Hello" precīzi atbilst shēmai "Hello". Ne vairāk un ne mazāk. Virkne "sveiki!" neatbilst shēmai, jo beigās ir izsaukuma zīme un jo burts "h" ir nepareizais sākumburts. (Skatiet MatchOptions, lai uzzinātu, kādos veidos pārveidot šo uzvedību.)
Noteiktas rakstzīmes shēmas valodā tiek rezervētas īpašiem nolūkiem. Lai izmantotu šīs rakstzīmes, parakstiet rakstzīmi ar \ (atpakaļvērsto slīpsvītru), lai norādītu, ka rakstzīme jālieto burtiski, vai izmantojiet kādu no iepriekšdefinētajām shēmām, kas aprakstītas tālāk šajā tēmā. Šajā tabulā ir uzskaitītas īpašās rakstzīmes:
Īpašā rakstzīme | Apraksts |
---|---|
. | punkts vai beigu punkts |
? | jautājuma zīme |
* | zvaigznīte |
+ | plus |
( ) | iekavas |
[ ] | kvadrātiekavas |
{ } | figūriekavas |
^ | jumtiņš |
$ | dolāra zīme |
| | vertikālā josla |
\ | atpakaļvērstā slīpsvītra |
Piemēram, varat saskaņot ar "Labdien?", izmantojot modeli "Labdien\?" ar slīpsvītru pirms jautājuma zīmes.
Iepriekš definētas shēmas
Iepriekš definētas shēmas nodrošina vienkāršu veidu, kādā saskaņot vienu no rakstzīmju kopām vai vairāku rakstzīmju secību. Izmantojiet virknes konkatenācijas operatoru & lai apvienotu savas teksta virknes ar Match dalībniekiem uzskaitījums:
Saskaņot uzskaitījumu | Apraksts | Parasta izteiksme |
---|---|---|
Jebkuru | Atbilst jebkurai rakstzīmei. | . |
Komats | Atbilst komatam. | , |
Cipars | Atbilst vienam ciparam ("0" līdz "9"). | \d |
E-pasts | Atbilst e-pasta adresei, kas ietver "at" simbolu ("@"), un domēna nosaukumu, kas ietver punktu (".") | .+\@.+\\.[^\\.]{2,} |
Defise | Atbilst pārnesumzīmei. | \- |
LeftParen | Atbilst kreisajām iekavām "(". | \( |
Vēstule | Atbilst burtam. | \p{L} |
MultipleDigits | Atbilst vienam vai vairākiem cipariem. | \d+ |
MultipleLetters | Atbilst vienam vai vairākiem burtiem. | \p{L}+ |
MultipleNonSpaces | Atbilst vienai vai vairākām rakstzīmēm, kas nepievieno baltstarpu (nevis atstarpi, tabulēšanu vai jaunu rindu). | \S+ |
MultipleSpaces | Atbilst vienai vai vairākām rakstzīmēm, kas pievieno baltstarpu (atstarpi, tabulēšanu vai jaunu rindu). | \s+ |
NonSpace | Atbilst vienai rakstzīmei, kas nepievieno baltstarpu. | \S |
IzvēlesDigits | Atbilst nullei, vienam vai vairākiem cipariem. | \d* |
Pēc izvēlesLetters | Atbilst nullei, vienam vai vairākiem burtiem. | \p{L}* |
IzvēlesNonSpaces | Atbilst nullei, vienam vai vairākām rakstzīmēm, kuras nepievieno baltstarpu. | \S* |
NeobligātasSpaces | Atbilst nullei, vienam vai vairākām rakstzīmēm, kuras pievieno baltstarpu. | \s* |
Periods | Atbilst punktam vai beigu punktam ("."). | \. |
RightParen | Atbilst labajām iekavām ")". | \) |
Kosmoss | Atbilst rakstzīmei, kura pievieno baltstarpu. | \s |
Cilne | Atbilst tabulācijas rakstzīmei. | \t |
Piemēram, raksts "A" &; MultipleDigits atbildīs burtam "A", kam seko viens vai vairāki cipari.
Regulāras izteiksmes
Šo funkciju lietotā shēma ir regulāra izteiksme. Parastās rakstzīmes un iepriekš definētas shēmas, kuras aprakstītas iepriekš šajā tēmā, palīdz veidot regulāras izteiksmes.
Regulāras izteiksmes ir ļoti jaudīgas, pieejamas daudzās programmēšanas valodās, un tās izmanto dažādiem nolūkiem. Tās bieži vien var izskatīties kā nejauša pieturzīmju secība. Šajā rakstā aprakstīti nevis visi regulāru izteiksmju aspekti, bet gan tīmeklī pieejamā informācija, pamācības un rīki.
Regulārajām izteiksmēm ir dažādi dialekti, un Power Apps izmanto JavaScript dialekta variantu. Lai sāktu darbu ar sintaksi, skatiet sadaļu regulāras izteiksmes sintakse. Tiek atbalstītas dēvētās apakšatbilstības (reizēm sauktas par dēvētajām tveršanas grupām):
- Dēvētas apakšatbilstības: (?<name> ...)
- Dēvētas aizmuguratsauces: \k<name>
Šajā tēmā iepriekš aprakstītajā Match uzskaitījuma tabulā katrs uzskaitījums parādās tādā pašā rindā, kā tam atbilstošā regulārā izteiksme.
Atbilstības opcijas
Šo funkciju darbību var modificēt, norādot vienu vai vairākas opcijas, kuras var apvienot, izmantojot virknes konkatenācijas operatoru (&).
MatchOptions uzskaitījums | Apraksts | Ietekme uz regulāru izteiksmi |
---|---|---|
MatchOptions.BeginsWith | Shēmai ir jāatbilst no teksta sākuma. | Pievieno ^ regulāras izteiksmes sākumam. |
MatchOptions.Complete | Noklusējuma iestatījums funkcijai IsMatch. Shēmai ir jāatbilst visai teksta virknei no sākuma līdz beigām. | Pievieno ^ regulāras izteiksmes sākumam un $ regulāras izteiksmes beigām. |
MatchOptions.Satur | Noklusējums funkcijām Match un MatchAll. Shēmai ir jāparādās kaut kur tekstā, taču tekstam nav ar to jāsākas vai jābeidzas. | Nepārveido regulāru izteiksmi. |
MatchOptions.EndsWith | Shēmai ir jāatbilst teksta virknes beigām. | Pievieno $ regulāras izteiksmes beigām. |
MatchOptions.IgnoreCase | Lielos un mazos burtus uztver kā identiskus. Pēc noklusējuma saskaņošana ir reģistrjutīga. | Nepārveido regulāru izteiksmi. Šī opcija ir standarta "i" modifikatora ekvivalents regulārajām izteiksmēm. |
MatchOptions.Multiline | Atbilstības vairākās rindās. | Nepārveido regulāru izteiksmi. Šī opcija ir standarta "m" modifikatora ekvivalents regulārajām izteiksmēm. |
MatchAll izmantošana ir līdzvērtīga standarta "g" modifikatora izmantošanai regulārām izteiksmēm.
Sintakse
IsMatch( Teksts,Raksts [ , Opcijas ] )
- Teksts - Obligāts. Teksta virkne, kas jāpārbauda.
- Raksts - Obligāts. Shēma, ko pārbaudīt kā teksta virkni. Sagrupējiet iepriekšdefinētās shēmas, kuras definē uzskaitījums Match, vai nodrošiniet regulāru izteiksmi. Rakstam ir jābūt nemainīgai formulai bez mainīgajiem, datu avotiem vai citām dinamiskām atsaucēm, kas mainās programmas darbības laikā.
- Iespējas - Pēc izvēles. MatchOptions uzskaitījuma vērtību teksta virkņu kombinācija. Pēc noklusējuma tiek izmantots MatchOptions.Complete.
Match( Teksts,Raksts [ , Opcijas ] )
- Teksts - Obligāts. Teksta virkne, kas jāsaskaņo.
- Raksts - Obligāts. Shēma, ko saskaņot kā teksta virkni. Sagrupējiet iepriekšdefinētās shēmas, kuras definē uzskaitījums Match, vai nodrošiniet regulāru izteiksmi. Rakstam ir jābūt nemainīgai formulai bez mainīgajiem, datu avotiem vai citām dinamiskām atsaucēm, kas mainās programmas darbības laikā.
- Iespējas - Pēc izvēles. MatchOptions uzskaitījuma vērtību teksta virkņu kombinācija. Pēc noklusējuma tiek izmantots MatchOptions.Contains.
MatchAll( Teksts,Raksts [ , Opcijas ] )
- Teksts - Obligāts. Teksta virkne, kas jāsaskaņo.
- Raksts - Obligāts. Shēma, ko saskaņot kā teksta virkni. Sagrupējiet iepriekšdefinētās shēmas, kuras definē uzskaitījums Match, vai nodrošiniet regulāru izteiksmi. Rakstam ir jābūt nemainīgai formulai bez mainīgajiem, datu avotiem vai citām dinamiskām atsaucēm, kas mainās programmas darbības laikā.
- Iespējas - Pēc izvēles. MatchOptions uzskaitījuma vērtību teksta virkņu kombinācija. Pēc noklusējuma tiek izmantots MatchOptions.Contains.
IsMatch piemēri
Parastas rakstzīmes
Iedomājieties, ka programmā ir Teksta ievades vadīkla ar nosaukumu TextInput1. Lietotājs ievada vērtības šajā vadīklā, lai tās tiktu glabātas datu bāzē.
Lietotājs ievada Hello world laukā TextInput1.
Formula | Apraksts | Rezultāts |
---|---|---|
IsMatch( TextInput1.Text, "Hello world" ) |
Pārbauda, vai lietotāja ievade atbilst precīzi virknei "Hello world". | patiess |
IsMatch( TextInput1.Text, "Good bye" ) |
Pārbauda, vai lietotāja ievade atbilst precīzi virknei "Good bye". | nepatiess |
IsMatch( TextInput1.Text, "hello", Contains ) |
Pārbauda, vai lietotāja ievadē ir vārds "hello" (reģistrjutīgs). | nepatiess |
IsMatch( TextInput1.Text, "hello", Contains & IgnoreCase ) |
Pārbauda, vai lietotāja ievadē ir vārds "hello" (reģistrnejutīgs). | patiess |
Iepriekš definētas shēmas
Formula | Apraksts | Rezultāts |
---|---|---|
IsMatch( "123-45-7890", Digit & Digit & Digit & Hyphen & Digit & Digit & Hyphen & Digit & Digit & Digit & Digit ) |
Atbilst Savienoto Valstu sociālās apdrošināšanas numuram | patiess |
IsMatch( "joan@contoso.com", Email ) |
Atbilst e-pasta adresei | patiess |
IsMatch( "123.456", MultipleDigits & Period & OptionalDigits ) |
Atbilst ciparu sekvencei, beigu punktam, pēc tam nullei vai vairākiem cipariem. | patiess |
IsMatch( "123", MultipleDigits & Period & OptionalDigits ) |
Atbilst ciparu sekvencei, beigu punktam, pēc tam nullei vai vairākiem cipariem. Punkts neparādās saskaņojamajā tekstā, tāpēc šī shēma netiek saskaņota. | nepatiess |
Regulāras izteiksmes
Formula | Apraksts | Rezultāts |
---|---|---|
IsMatch( "986", "\d+" ) |
Atbilst veselam skaitlim, kas lielāks par nulli. | patiess |
IsMatch( "1.02", "\d+(\.\d\d)?" ) |
Atbilst pozitīvai valūtas summai. Ja ievadē ir iekļauts decimālpunkts, ievadē ir jābūt arī divām skaitliskām rakstzīmēm pēc decimālpunkta. Piemēram, 3,00 ir derīgs, bet 3,1 nav. | patiess |
IsMatch( "-4.95", "(-)?\d+(\.\d\d)?" ) |
Atbilst pozitīvai vai negatīvai valūtas summai. Ja ievadē ir iekļauts decimālpunkts, ievadē ir jābūt arī divām skaitliskām rakstzīmēm pēc decimālpunkta. | patiess |
IsMatch( "111-11-1111", "\d{3}-\d{2}-\d{4}" ) |
Atbilst Savienoto Valstu sociālās apdrošināšanas numuram Validē norādītā ievades lauka formātu, tipu un garumu. Saskaņojamajai virknei ir jāsastāv no trim skaitliskām rakstzīmēm, kurām seko domuzīme, pēc tam divām skaitliskām rakstzīmēm, kurām seko domuzīme, un pēc tam četrām skaitliskām rakstzīmēm. | patiess |
IsMatch( "111-111-111", "\d{3}-\d{2}-\d{4}" ) |
Tāds pats kā Iepriekšējais piemērs, bet viena no pārnesumzīmēm ievadē ir nevietā. | nepatiess |
IsMatch( "AStrongPasswordNot", "(?!^[0-9]\*$)(?!^[a-zA-Z]\*$)([a-zA-Z0-9]{8,10})" ) |
Validē stipru paroli, kurā ir jābūt astoņām, deviņām vai desmit rakstzīmēm, līdztekus vismaz vienam ciparam un vismaz vienai alfabēta rakstzīmei. Virknē nedrīkst būt īpašās rakstzīmes. | nepatiess |
Match un MatchAll piemēri
Formula | Apraksts | Rezultāts |
---|---|---|
Match( "Bob Jones <bob.jones@contoso.com>", "<(?<email>" & Match.Email & ")>" |
Tiek izvilkta tikai kontaktinformācijas e-pasta daļa. | { e-pasts: "bob.jones@contoso.com", FullMatch: "<bob.jones@contoso.com>", SubMatches: [ "bob.jones@contoso.com" ], StartMatch: 11 } |
Match( "Bob Jones <InvalidEmailAddress>", "<(?<email>" & Match.Email & ")>" |
Tiek izvilkta tikai kontaktinformācijas e-pasta daļa. Nav atrasta juridiskā adrese (nav @ zīmes), tāpēc funkcija atgriež blank. | Tukša |
Match( Language(), "(<language>\w{2})(?:-(?<script>\w{4}))?(?:-(?<region>\w{2}))?" ) |
Izvelk valodas birkas valodas, skripta un reģiona daļu, ko atgriež funkcija Language. Šie rezultāti atspoguļo Savienotās Valstis; lai iegūtu vairāk piemēru, skatiet funkcijas Language dokumentāciju. (?: operatoru grupas rakstzīmes, neveidojot citu apakšatbilstību. | { 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)?" ) |
Izvelk stundas, minūtes un sekundes no ISO 8601 ilguma vērtības. Izvilktie skaitļi joprojām ir teksta virknē; Izmantojiet funkciju Value, lai pārvērstu to par skaitli, pirms tajā tiek veiktas matemātiskās darbības. | { hours: "2", minutes: "1", seconds: "39", FullMatch: "PT2H1M39S", SubMatches:["2","1","39"], StartMatch: 1 } |
Detalizētāk aplūkosim pēdējo piemēru. Ja šī virkne ir jāpārvērš par datuma/laika vērtību, izmantojot funkciju Time, ir atsevišķi jāpāriet uz nodēvētajām apakšatbilstībām. Lai to izdarītu, varat izmantot funkciju With, kas darbojas ierakstā, ko atgriež funkcija Match:
With(
Match( "PT2H1M39S", "PT(?:(?<hours>\d+)H)?(?:(?<minutes>\d+)M)?(?:(?<seconds>\d+)S)?" ),
Time( Value( hours ), Value( minutes ), Value( seconds ) )
)
Šiem piemēriem pievienojiet Button vadīklu, iestatiet tās rekvizītu OnSelect uz šo formulu un pēc tam atlasiet šo pogu:
Set( pangram, "The quick brown fox jumps over the lazy dog." )
Formula | Apraksts | Rezultāts |
---|---|---|
Match( pangram, "THE", IgnoreCase ) |
Atrodiet visas atbilstības "THE" atbilstības teksta virknē, ko satur mainīgais pangram. Virknē ir divas atbilstības, bet tikai pirmā tiek atgriezta, jo izmantojat funkciju Match, nevis MatchAll. Apakšatbilstību kolonna ir tukša, jo netika definēta neviena apakšatbilstība. | { FullMatch: "The", SubMatches: [ ], StartMatch: 32 } |
MatchAll( pangram, "the" ) |
Atrodiet visas atbilstības "the" atbilstības teksta virknē, ko satur mainīgais pangram. Pārbaude ir reģistrjutīga, tāpēc tiek atrasta tikai otrā "the" instance. Apakšatbilstību kolonna ir tukša, jo netika definēta neviena apakšatbilstība. | |
MatchAll( pangram, "the", IgnoreCase ) |
Atrodiet visas atbilstības "the" atbilstības teksta virknē, ko satur mainīgais pangram. Šajā gadījumā pārbaude ir reģistrnejutīga, tāpēc tiek atrastas abas vārda instances. Apakšatbilstību kolonna ir tukša, jo netika definēta neviena apakšatbilstība. | |
MatchAll( pangram, "\b\wo\w\b" ) |
Atrod visus trīs burtu vārdus, kuru vidū ir "o". Ņemiet vērā, ka "brown" tiek izslēgts, jo tas nav trīs burtu vārds un tāpēc neatbilst "\b" (vārda robeža). | |
Match( pangram, "\b\wo\w\b\s\*(?<between>\w.+\w)\s\*\b\wo\w\b" ) |
Sakrīt ar visām rakstzīmēm, kas ir starp "fox" un "dog". | { starp: "jumps over the lazy", FullMatch: "fox jumps over the lazy dog", SubMatches: [ "jumps over the lazy" ], StartMatch: 17 } |
Lai skatītu MatchAll rezultātus galerijā:
Tukšā ekrānā ievadiet tukšu vertikālās Gallery vadīklu.
Iestatiet galerijas Elementu rekvizītu uz MatchAll (pangram, "\w +") vai MatchAll (pangram, MultipleLetters).
Lai atlasītu galerijas veidni, galerijas vadīklas vidū atlasiet "Pievienot elementu no ievietošanas cilnes".
Galerijas veidnei pievienojiet vadīklu Label.
Iestatiet etiķetes rekvizītu Teksts uz ThisItem.FullMatch.
Galerija tiek aizpildīta ar katru vārdu mūsu piemēra tekstā. Mainiet galerijas veidnes un etiķetes vadīklas izmēru, lai redzētu visus vārdus vienā ekrānā.