Funkcijos IsMatch, Match ir MatchAll
Taikoma: Drobės programoms
Modeliu pagrįstoms programoms
Power Pages
Power Platform CLI
Tikrindama ieško atitikmens arba pagal modelį išgauna teksto eilutės dalis.
Aprašas
Funkcija IsMatch tikrina, ar teksto eilutė atitinka modelį, kuris gali apimti įprastus simbolius, iš anksto apibrėžtus modelius arba reguliarųjį reiškinį. Funkcijos Match ir MatchAll pateikia elementus, kurių atitikmenų buvo ieškoma, įskaitant antrinius atitikmenis.
Naudokite IsMatch, jei norite patikrinti, ką vartotojas įvedėte teksto įvesties valdiklyje. Pavyzdžiui, galite įsitikinti, kad vartotojas įvedė galiojantį el. pašto adresą, prieš rezultatus įrašant į jūsų duomenų šaltinį. Jei įrašas neatitinka jūsų kriterijų, įtraukite kitų valdiklių, raginančių vartotoją pataisyti įrašą.
Naudokite Match, jei norite išgauti pirmąją teksto eilutę, atitinkančią modelį, o MatchAll – jei norite išgauti visas atitinkančias teksto eilutes. Be to, galite išgauti antrinius atitikmenis ir išanalizuoti sudėtines eilutes.
Atitiktis grąžina pirmojo rasto atitikmens informacijos įrašą, o "MatchAll" pateikia kiekvieno rasto atitikmens įrašų lentelę. Įraše arba įrašuose yra:
Column | Tipas | Aprašą |
---|---|---|
įvardytos sub-rungtynės arba sub-rungtynės | Tekstinė žinutė | Kiekvienas pavadintas antrinis atitikmuo turės savo stulpelį. Pavadintą antrinį atitikmenį sukurkite reguliariajame reiškinyje naudodami (?<name>...). Jei pavadinto antrinio atitikmens pavadinimas yra toks pats, kaip vieno iš stulpelių, apibrėžtų iš anksto (toliau), viršesnis yra antrinis atitikmuo ir sugeneruojamas įspėjimas. Norėdami šio įspėjimo išvengti, antrinį atitikmenį pervardykite. |
"FullMatch" | Tekstas | Visa teksto eilutė, kurios atitikmenų ieškota. |
StartMatch | Numeris | Įvesties teksto eilutėje esanti pradinė atitikmens padėtis. Pirmasis eilutės simbolis pateikia 1. |
SubMatchs | Vieno stulpelio teksto lentelė (stulpelis Value) | Pavadintų ir nepavadintų antrinių atitikmenų lentelė, kurioje jie pateikiami tokia tvarka, kokia rodomi reguliariajame reiškinyje. Paprastai su pavadintais antriniais atitikmenimis yra lengviau dirbti ir jie yra rekomenduojami. Norėdami dirbti su atskiru antriniu atitikmeniu, naudokite funkciją ForAll arba funkcijas Last( FirstN( ... ) ). Jei reguliariajame reiškinyje antrinių atitikmenų neapibrėžta, ši lentelė bus pateikta, tačiau ji bus tuščia. |
Šios funkcijos palaiko MatchOptions. Numatytasis veikimas
- Šios funkcijos atitikmenų ieško atsižvelgdamos į raidžių dydį. Naudokite MatchOptions.IgnoreCase, kad atliktumėte didžiųjų ir mažųjų raidžių atitikmenis.
- "IsMatch " atitinka visą teksto eilutę ("Complete MatchOption"), o "Match " ir "MatchAll" ieško atitikmens bet kurioje teksto eilutės vietoje (yra "MatchOption"). Complete, Contains, BeginsWith ar EndsWith naudokite pagal savo situaciją.
"IsMatch " grąžina teisingą , jei teksto eilutė atitinka šabloną, arba klaidingą , jei neatitinka. Atitiktis pateikiama tuščia, jei nerandama atitikmens, kurį galima patikrinti naudojant funkciją IsBlank . MatchAll grąžina tuščią lentelę, jei nerandama atitikmens, kurį galima patikrinti naudojant funkciją IsEmpty .
Jei, norėdami išskaidyti teksto eilutę, naudojate MatchAll, apsvarstykite galimybę naudoti funkciją Split, kurią paprasčiau naudoti ir kuri yra greitesnė.
Modeliai
Naudojant šias funkcijas svarbiausia aprašyi modelį, kurio atitikmenų ieškosite. Modelis aprašomas teksto eilutėje, derinant tolesnius elementus.
- Įprastus simbolius, pvz., abc ar 123.
- Iš anksto apibrėžtus modelius, pvz., Letter, MultipleDigits ar Email. (Šiuos modelius apibrėžia Match išvardijimas.)
- Reguliariųjų reiškinių kodus, pvz., \d+\s+\d+ ar [a-z]+.
Sujunkite šiuos elementus naudodami eilučių sujungimo operatorių &. Pavyzdžiui, "abc" &; Digit & "\s+" yra tinkamas raštas, atitinkantis simbolius "a", "b" ir "c", po kurių eina skaitmuo nuo 0 iki 9, po kurio eina bent vienas tarpo simbolis.
Įprasti simboliai
Paprasčiausias modelis yra įprastų simbolių seka, kurios tikslių atitikmenų ieškoma.
Pavyzdžiui, kai kartu naudojama funkcija IsMatch, eilutė „Sveiki“ tiksliai atitinka modelį Sveiki. Ne daugiau ir ne mažiau. Eilutė „sveiki!“ modelio neatitinka dėl šauktuko pabaigoje ir netinkamo raidės „s“ dydžio. (Norėdami sužinoti apie būdus, kaip šį veikimą modifikuoti, žr. MatchOptions.)
Modelių kalboje tam tikri simboliai paliekami specialiems tikslams. Norėdami naudoti šiuos simbolius, prieš simbolį įtraukite \ (kairinį brūkšnį), kad nurodytumėte, jog reikia atsižvelgti į patį simbolį, arba naudokite vieną iš vėliau šioje temoje aprašytų iš anksto apibrėžtų modelių. Tolesnėje lentelėje išvardyti specialieji simboliai.
Specialusis simbolis | Aprašą |
---|---|
. | taškas |
? | klaustukas |
* | žvaigždutė |
+ | plus |
( ) | skliaustai |
[ ] | laužtiniai skliaustai |
{ } | riestiniai skliaustai |
^ | intarpas |
$ | dolerio ženklas |
| | vertikalusis brūkšnys |
\ | kairinis brūkšnys |
Pavyzdžiui, galite ieškoti „Sveiki?“ atitikmenų, naudodami modelį „Sveiki\?“ su kairiniu brūkšniu prieš klaustuką.
Iš anksto apibrėžti modeliai
Naudojant iš anksto apibrėžtus modelius, paprasta ieškoti vieno iš simbolių rinkinio arba kelių simbolių sekos atitikmenų. Naudokite eilučių sujungimo operatorių ir derinkite savo teksto eilutes su atitikties nariais išvardijimas:
Match išvardijimas | Aprašas | Paprastoji išraiška |
---|---|---|
Betkuris | Ieško bet kokio simbolio atitikmenų. | . |
Kablelis | Ieško kablelio atitikmenų. | , |
Skaitmenų | Ieško vieno skaitmens (nuo 0 iki 9) atitikmenų. | \d |
El paštas | Ieško el. pašto adreso, kuriame yra simbolis „eta“ („@“), ir domeno pavadinimo, kuriame yra taškas („.“), atitikmenų | .+\@.+\\.[^\\.]{2,} |
Brūkšnelis | Ieško brūkšnelio atitikmenų. | \- |
LeftParen | Ieško kairiojo skliausto „(“ atitikmenų. | \( |
Laiškas | Ieško raidės atitikmenų. | \p{L} |
MultipleDigits | Ieško vieno arba kelių skaitmenų atitikmenų. | \d+ |
MultipleLetters | Ieško vieno arba kelių raidžių atitikmenų. | \p{L}+ |
"MultipleNonSpaces" | Ieško vieno ar kelių simbolių, kurie neįtraukia tarpo (ne tarpo, skirtuko ar naujos eilutės), atitikmenų. | \S+ |
MultipleSpaces | Ieško vieno ar kelių simbolių, kurie įtraukia tarpą (tarpo, skirtuko ar naujos eilutės), atitikmenų. | \s+ |
Ne erdvė | Ieško vieno simbolio, neįtraukiančio tarpo, atitikmenų. | \S |
OptionalDigits | Ieško nulio, vieno arba kelių skaitmenų atitikmenų. | \d* |
OptionalLetters | Ieško nulio, vienos arba kelių raidžių atitikmenų. | \p{L}* |
OptionalNonSpaces | Ieško nulio, vieno ar kelių simbolių, kurie neįtraukia tarpo. | \S* |
Pasirenkamos erdvės | Ieško nulio, vieno ar kelių simbolių, kurie įtraukia tarpą. | \s* |
Tarpas | Ieško taško („.“) atitikmenų. | \. |
RightParen | Ieško dešiniojo skliausto „)“ atitikmenų. | \) |
Erdvė | Ieško simbolio, kuris įtraukia tarpą, atitikmenų. | \s |
Skirtukas | Atitinka skirtuko ženklą. | \t |
Pavyzdžiui, raštas "A" ir "MultipleDigits " atitiks raidę "A", po kurios eina vienas ar daugiau skaitmenų.
Reguliarieji reiškiniai
Šių funkcijų naudojamas modelis yra reguliarusis reiškinys. Kurti reguliariuosius reiškinius padeda anksčiau šioje temoje aprašyti įprasti simboliai ir iš anksto apibrėžti modeliai.
Reguliarieji reiškiniai yra labai veiksmingi, prieinami daugelyje programavimo kalbų ir naudojami įvairiausiems tikslams. Taip pat jie dažnai gali atrodyti kaip atsitiktinė skyrybos ženklų seka. Šiame straipsnyje neaprašyti visi reguliariųjų reiškinių aspektai, tačiau žiniatinklyje yra gausu informacijos, mokomosios medžiagos ir įrankių.
Reguliarieji reiškiniai būna skirtingų dialektų, o „Power Apps“ naudoja „JavaScript“ dialekto variantą. Norėdami peržiūrėti įvadą į sintaksę, žr. Reguliariųjų reiškinių sintaksė. Palaikomi pavadinti antriniai atitikmenys (kartais vadinami įrašymo grupėmis):
- Pavadinti antriniai atitikmenys: (?<name> ...)
- Pavadintos atgalinės nurodos: \k<name>
Pirmiau šioje temoje pateiktoje Match išvardijimų lentelėje kiekvienas išvardijimas rodomas toje pačioje eilutėje, kaip ir atitinkamas reguliarusis reiškinys.
Atitikmenų ieškos parinktys
Galite modifikuoti šių funkcijų veikimą nurodydami vieną ar daugiau parinkčių, kurias galite derinti naudodami eilutės sujungimo operatorių (&).
MatchOptions išvardijimas | Aprašą | Įtaka reguliariajam reiškiniui |
---|---|---|
MatchOptions.BeginsWith | Modelis turi atitikti nuo teksto pradžios. | Į reguliariojo reiškinio pradžią įtraukia ^. |
MatchOptions.Complete | Numatytoji IsMatch reikšmė. Modelis turi atitikti visą teksto eilutę, nuo pradžios iki pabaigos. | Į reguliariojo reiškinio pradžią įtraukia ^, o į pabaigą – $. |
MatchOptions.Yra | Numatytoji Match ir MatchAll reikšmė. Modelis turi būti rodomas kažkur tekste, bet neprivalo jo pradėti ar baigti. | Reguliariojo reiškinio nemodifikuoja. |
MatchOptions.EndsWith | Modelis turi atitikti teksto eilutės pabaigą. | Į reguliariojo reiškinio pabaigą įtraukia $. |
MatchOptions.IgnoreCase | Didžiąsias ir mažąsias raides traktuoja kaip identiškas. Numatyta, kad atitikmenų ieškoma atsižvelgiant į raidžių dydį. | Reguliariojo reiškinio nemodifikuoja. Ši parinktis atitinka standartinį reguliariųjų reiškinių modifikatorių „i“. |
MatchOptions.Multiline | Atitikmenų ieško keliose eilutėse. | Reguliariojo reiškinio nemodifikuoja. Ši parinktis atitinka standartinį reguliariųjų reiškinių modifikatorių „m“. |
MatchAll rezultatas atitinka standartinio reguliariųjų reiškinių modifikatoriaus „g“ naudojimą.
Sintaksė
IsMatch( tekstas,raštas [, parinktys ] )
- Tekstas – būtinas. Teksto eilutė, kurią reikia tikrinti.
- Raštas – būtinas. Modelis, kurį reikia tikrinti kaip teksto eilutę. Sujunkite iš anksto apibrėžtus modelius, kuriuos apibrėžia Match išvardijimas, arba pateikite reguliarųjį reiškinį. Raštas turi būti pastovi formulė be jokių kintamųjų, duomenų šaltinių ar kitų dinaminių nuorodų, kurios keičiasi vykdant programą.
- Parinktys – neprivaloma. MatchOptions išvardijimo reikšmių teksto eilutės junginys. Numatyta, kad naudojama MatchOptions.Complete.
Match(tekstas,raštas [, parinktys ] )
- Tekstas – būtinas. Teksto eilutė, kurios atitikmenų reikia ieškoti.
- Raštas – būtinas. Modelis, kurio atitikmenys turi būti ieškomi kaip teksto eilutė. Sujunkite iš anksto apibrėžtus modelius, kuriuos apibrėžia Match išvardijimas, arba pateikite reguliarųjį reiškinį. Raštas turi būti pastovi formulė be jokių kintamųjų, duomenų šaltinių ar kitų dinaminių nuorodų, kurios keičiasi vykdant programą.
- Parinktys – neprivaloma. MatchOptions išvardijimo reikšmių teksto eilutės junginys. Numatyta, kad naudojama MatchOptions.Contains.
MatchAll(tekstas,raštas [, parinktys ] )
- Tekstas – būtinas. Teksto eilutė, kurios atitikmenų reikia ieškoti.
- Raštas – būtinas. Modelis, kurio atitikmenys turi būti ieškomi kaip teksto eilutė. Sujunkite iš anksto apibrėžtus modelius, kuriuos apibrėžia Match išvardijimas, arba pateikite reguliarųjį reiškinį. Raštas turi būti pastovi formulė be jokių kintamųjų, duomenų šaltinių ar kitų dinaminių nuorodų, kurios keičiasi vykdant programą.
- Parinktys – neprivaloma. MatchOptions išvardijimo reikšmių teksto eilutės junginys. Numatyta, kad naudojama MatchOptions.Contains.
IsMatch pavyzdžiai
Įprasti simboliai
Įsivaizduokite, kad jūsų programoje yra teksto įvesties valdiklis pavadinimu TextInput1. Vartotojas į šį valdiklį įveda reikšmes, kad jos būtų saugomos duomenų bazėje.
Į TextInput1 vartotojas įveda Labas, pasauli.
Formulė | Aprašas | Rezultatas |
---|---|---|
IsMatch( TextInput1.Text, "Hello world" ) |
Patikrina, ar vartotojo įvestis tiksliai atitinka eilutę „Labas, pasauli“. | Tiesa |
IsMatch( TextInput1.Text, "Good bye" ) |
Patikrina, ar vartotojo įvestis tiksliai atitinka eilutę „Viso gero“. | klaidinga |
IsMatch( TextInput1.Text, "hello", Contains ) |
Patikrina, ar vartotojo įvestyje yra žodis „labas“ (atsižvelgiama į raidžių dydį). | klaidinga |
IsMatch( TextInput1.Text, "hello", Contains & IgnoreCase ) |
Patikrina, ar vartotojo įvestyje yra žodis „labas“ (neatsižvelgiama į raidžių dydį). | Tiesa |
Iš anksto apibrėžti modeliai
Formulė | Aprašas | Rezultatas |
---|---|---|
IsMatch( "123-45-7890", Digit & Digit & Digit & Hyphen & Digit & Digit & Hyphen & Digit & Digit & Digit & Digit ) |
Ieško Jungtinių Valstijų socialinio draudimo numerio atitikmens | Tiesa |
IsMatch( "joan@contoso.com", Email ) |
Ieško el. pašto adreso atitikmens | Tiesa |
IsMatch( "123.456", MultipleDigits & Period & OptionalDigits ) |
Ieško skaitmenų sekos, taško ir nulio ar kelių skaitmenų atitikmenų. | Tiesa |
IsMatch( "123", MultipleDigits & Period & OptionalDigits ) |
Ieško skaitmenų sekos, taško ir nulio ar kelių skaitmenų atitikmenų. Tekste, kurio atitikmenų reikia ieškoti, taško nėra, todėl šio modelio atitikmenų neieškoma. | klaidinga |
Reguliarieji reiškiniai
Formulė | Aprašas | Rezultatas |
---|---|---|
IsMatch( "986", "\d+" ) |
Ieško už nulį didesnio sveikojo skaičiaus atitikmenų. | Tiesa |
IsMatch( "1.02", "\d+(\.\d\d)?" ) |
Ieško teigiamos valiutos sumos atitikmenų. Jei įvestyje yra dešimtainis skyriklis, joje po skyriklio taip pat turi būti du skaitiniai simboliai. Pavyzdžiui, 3,00 gali būti, o 3,1 – ne. | Tiesa |
IsMatch( "-4.95", "(-)?\d+(\.\d\d)?" ) |
Ieško teigiamos arba neigiamos valiutos sumos atitikmenų. Jei įvestyje yra dešimtainis skyriklis, joje po skyriklio taip pat turi būti du skaitiniai simboliai. | Tiesa |
IsMatch( "111-11-1111", "\d{3}-\d{2}-\d{4}" ) |
Ieško Jungtinių Valstijų socialinio draudimo numerio atitikmens Patikrina pateikto įvesties lauko formatą, tipą ir ilgį. Eilutę, kurios atitikmenų ieškoma, turi sudaryti trys skaitiniai simboliai, o po jų turi sekti brūkšnys, du skaitiniai simboliai, brūkšnys ir keturi skaitiniai simboliai. | Tiesa |
IsMatch( "111-111-111", "\d{3}-\d{2}-\d{4}" ) |
Tas pats, kaip ankstesniame pavyzdyje, tačiau vienas iš brūkšnelių yra netinkamoje įvesties vietoje. | klaidinga |
IsMatch( "AStrongPasswordNot", "(?!^[0-9]\*$)(?!^[a-zA-Z]\*$)([a-zA-Z0-9]{8,10})" ) |
Patikrina sudėtingą slaptažodį, kuriame turi būti aštuoni, devyni arba 10 simbolių bei bent vienas skaitmuo ir bent vienas abėcėlės simbolis. Eilutėje neturi būti specialiųjų simbolių. | klaidinga |
Match ir MatchAll pavyzdžiai
Formulė | Aprašas | Rezultatas |
---|---|---|
Match( "Bob Jones <bob.jones@contoso.com>", "<(?<email>" & Match.Email & ")>" |
Išgauna tik kontakto informacijos el. pašto adreso dalį. | { email: "bob.jones@contoso.com", FullMatch: "<bob.jones@contoso.com>", SubMatches: [ "bob.jones@contoso.com" ], StartMatch: 11 } |
Match( "Bob Jones <InvalidEmailAddress>", "<(?<email>" & Match.Email & ")>" |
Išgauna tik kontakto informacijos el. pašto adreso dalį. Juridinio adreso nerasta (nėra ženklo @), todėl funkcija pateikia blank. | Tuščią |
Match( Language(), "(<language>\w{2})(?:-(?<script>\w{4}))?(?:-(?<region>\w{2}))?" ) |
Iš kalbos žymės, kurią pateikia funkcija Language, išgauna kalbos, scenarijaus ir regiono dalis. Šie rezultatai taikomi Jungtinėms Valstijoms; daugiau pavyzdžių žr. funkcijos Language dokumentacijoje. Operatorius (?: simbolius grupuoja nekurdamas kito antrinio atitikmens. | { 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)?" ) |
Iš ISO 8601 trukmės reikšmės išgauna valandas, minutes ir sekundes. Išgauti skaičiai vis dar yra teksto eilutėje; naudodami funkciją Value, eilutę galite konvertuoti į skaičių prieš tai, kai su ja atliekamos matematinės operacijos. | { hours: "2", minutes: "1", seconds: "39", FullMatch: "PT2H1M39S", SubMatches:["2","1","39"], StartMatch: 1 } |
Panagrinėkime pastarąjį pavyzdį. Jei šią eilutę norėtumėte konvertuoti į datos / laiko reikšmę naudodami funkciją Time, pavadintus antrinius atitikmenis turite perduoti atskirai. Norėdami tai atlikti, galite naudoti funkciją With, dirbdami su įrašu, kurį pateikia Match:
With(
Match( "PT2H1M39S", "PT(?:(?<hours>\d+)H)?(?:(?<minutes>\d+)M)?(?:(?<seconds>\d+)S)?" ),
Time( Value( hours ), Value( minutes ), Value( seconds ) )
)
Šiems pavyzdžiams įtraukite mygtuko valdiklį, jo ypatybę OnSelect nustatykite kaip šią formulę, tada pasirinkite mygtuką:
Set( pangram, "The quick brown fox jumps over the lazy dog." )
Formulė | Aprašas | Rezultatas |
---|---|---|
Match( pangram, "THE", IgnoreCase ) |
Teksto eilutėje, esančioje kintamajame pangram, randami visi „THE“ atitikmenys. Eilutėje yra du atitikmenys, tačiau pateikiamas tik pirmasis, nes naudojate Match, o ne MatchAll. Stulpelis SubMatches yra tuščias, nes nebuvo apibrėžta jokių antrinių atitikmenų. | { FullMatch: "The", SubMatches: [ ], StartMatch: 32 } |
MatchAll( pangram, "the" ) |
Teksto eilutėje, esančioje kintamajame pangram, randami visi „the“ atitikmenys. Testas skiria didžiąsias ir mažąsias raides, todėl randamas tik antrasis „the“ egzempliorius. Stulpelis SubMatches yra tuščias, nes nebuvo apibrėžta jokių antrinių atitikmenų. | ![]() |
MatchAll( pangram, "the", IgnoreCase ) |
Teksto eilutėje, esančioje kintamajame pangram, randami visi „the“ atitikmenys. Šiuo atveju testas didžiųjų ir mažųjų raidžių neskiria, todėl randami abu žodžio egzemplioriai. Stulpelis SubMatches yra tuščias, nes nebuvo apibrėžta jokių antrinių atitikmenų. | ![]() |
MatchAll( pangram, "\b\wo\w\b" ) |
Randa visus trijų raidžių žodžius, kurių viduryje yra raidė „o“. Atkreipkite dėmesį, kad „brown“ nėra įtrauktas, nes tai nėra trijų raidžių žodis, todėl neatitinka „\b“ (žodžio ribų). | ![]() |
Match( pangram, "\b\wo\w\b\s\*(?<between>\w.+\w)\s\*\b\wo\w\b" ) |
Ieško visų simbolių tarp „fox“ ir „dog“ atitikmenų. | { between: "jumps over the lazy", FullMatch: "fox jumps over the lazy dog", SubMatches: [ "jumps over the lazy" ], StartMatch: 17 } |
Norėdami MatchAll rezultatus peržiūrėti galerijoje, atlikite tolesnius veiksmus.
Tuščiame ekrane įterpkite tuščią vertikalųjį valdiklį Gallery.
Galerijos ypatybę Items nustatykite kaip MatchAll( pangram, "\w+" ) arba MatchAll( pangram, MultipleLetters ).
Galerijos valdiklio viduryje pasirinkite Įtraukti elementą iš skirtuko Įterpimas, kad pasirinktumėte galerijos šabloną.
Į galerijos šabloną įtraukite žymos valdiklį.
Žymos ypatybę Text nustatykite kaip ThisItem.FullMatch.
Į galeriją įtraukiamas kiekvienas mūsų pavyzdinio teksto žodis. Norėdami visus žodžius matyti viename ekrane, pakeiskite galerijos šablono ir žymos valdiklio dydį.