Funkcijas IsMatch, Match un MatchAll

Attiecas uz: Audekla programmām Modeļa vadītas programmas 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.

Match atgriež informācijas ierakstu pirmajai atrastajai atbilstībai, un MatchAll atgriež ierakstu tabulu par katru atrasto atbilstību. Ieraksts vai ieraksti satur:

Column Tipi Apraksts
nodēvēta apakšatbilstība 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.
FullMatch 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šatbilstības 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 (Pabeigta MatchOption), savukārt Match un MatchAll meklē atbilstību jebkur teksta virknē (Satur MatchOption). Izmantojiet Pabeigts, Satur, BeginsWith vai EndsWith atbilstoši jūsu scenārijam.

IsMatch atgriež true, ja teksta virkne atbilst shēmai vai false, ja tā nav. Match atgriež blank, ja netiek atrasta atbilstība, ko var testēt ar funkciju IsBlank. MatchAll atgriež tukšu tabulu, ja nav atrasta tāda atbilstība, kuru 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 enum dalībniekiem :

Saskaņot uzskaitījumu Apraksts Parasta izteiksme
Any Atbilst jebkurai rakstzīmei. .
Comma Atbilst komatam. ,
Digit Atbilst vienam ciparam ("0" līdz "9"). \d
Email Atbilst e-pasta adresei, kas ietver "at" simbolu ("@"), un domēna nosaukumu, kas ietver punktu (".") .+\@.+\\.[^\\.]{2,}
Hyphen Atbilst pārnesumzīmei. \-
LeftParen Atbilst kreisajām iekavām "(". \(
Letter 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
OptionalDigits Atbilst nullei, vienam vai vairākiem cipariem. \d*
OptionalLetters Atbilst nullei, vienam vai vairākiem burtiem. \p{L}*
OptionalNonSpaces Atbilst nullei, vienam vai vairākām rakstzīmēm, kuras nepievieno baltstarpu. \S*
OptionalSpaces Atbilst nullei, vienam vai vairākām rakstzīmēm, kuras pievieno baltstarpu. \s*
Period Atbilst punktam vai beigu punktam ("."). \.
RightParen Atbilst labajām iekavām ")". \)
Space Atbilst rakstzīmei, kura pievieno baltstarpu. \s
Tab 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, Shēma [, Opcijas ])

  • Teksts — Obligāti. Teksta virkne, kas jāpārbauda.
  • Shēma – Obligāti. 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. Shēmai ir jābūt konstantai formulai bez mainīgajiem, datu avotiem vai citām dinamiskām atsaucēm, kas tiek mainītas, kad tiek palaista programma.
  • Opcijas – 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, Shēma [, Opcijas ])

  • Teksts — Obligāti. Teksta virkne, kas jāsaskaņo.
  • Shēma – Obligāti. 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. Shēmai ir jābūt konstantai formulai bez mainīgajiem, datu avotiem vai citām dinamiskām atsaucēm, kas tiek mainītas, kad tiek palaista programma.
  • Opcijas – 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, Shēma [, Opcijas ])

  • Teksts — Obligāti. Teksta virkne, kas jāsaskaņo.
  • Shēma – Obligāti. 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. Shēmai ir jābūt konstantai formulai bez mainīgajiem, datu avotiem vai citām dinamiskām atsaucēm, kas tiek mainītas, kad tiek palaista programma.
  • Opcijas – 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". aplams
IsMatch( TextInput1.Text, "hello", Contains ) Pārbauda, vai lietotāja ievadē ir vārds "hello" (reģistrjutīgs). aplams
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. aplams

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ā. aplams
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. aplams

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šs
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 pangrammai.
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 ar IgnoreCase.
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). MatchAll pangrammām ar b, wo, w un b.
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ā:

  1. Tukšā ekrānā ievadiet tukšu vertikālās Gallery vadīklu.

  2. Iestatiet galerijas Elementu rekvizītu uz MatchAll (pangram, "\w +") vai MatchAll (pangram, MultipleLetters).

    Elementu galerija.

  3. Lai atlasītu galerijas veidni, galerijas vadīklas vidū atlasiet "Pievienot elementu no ievietošanas cilnes".

  4. Galerijas veidnei pievienojiet vadīklu Label.

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

    Teksta rekvizīts.