Bendrinti naudojant


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.

Match pateikia pirmojo rasto atitikmens informacijos įrašą, o MatchAll – kiekvieno rasto atitikmens įrašų lentelę. Įraše arba įrašuose yra:

Column Tipas Aprašą
pavadintas antrinis atitikmuo arba antriniai atitikmenys 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.
SubMatches 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 ieško visos teksto eilutės atitikmenų (Complete MatchOption), o Match ir MatchAll atitikmens ieško bet kurioje teksto eilutės dalyje (Contains MatchOption). Complete, Contains, BeginsWith ar EndsWith naudokite pagal savo situaciją.

Jei teksto eilutė atitinka modelį, IsMatch pateikia true, o priešingu atveju – false. Match pateikia tuščią reikšmę, jei nerandama atitikmenų, kuriuos būtų galima patikrinti naudojant funkciją IsBlank. MatchAll pateikia tuščią lentelę, jei nerandama atitikmenų, kuriuos būtų 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
Any Ieško bet kokio simbolio atitikmenų. .
Comma Ieško kablelio atitikmenų. ,
Digit Ieško vieno skaitmens (nuo 0 iki 9) atitikmenų. \d
Email Ieško el. pašto adreso, kuriame yra simbolis „eta“ („@“), ir domeno pavadinimo, kuriame yra taškas („.“), atitikmenų .+\@.+\\.[^\\.]{2,}
Hyphen Ieško brūkšnelio atitikmenų. \-
LeftParen Ieško kairiojo skliausto „(“ atitikmenų. \(
Letter 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+
NonSpace 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*
OptionalSpaces Ieško nulio, vieno ar kelių simbolių, kurie įtraukia tarpą. \s*
Period Ieško taško („.“) atitikmenų. \.
RightParen Ieško dešiniojo skliausto „)“ atitikmenų. \)
Space Ieško simbolio, kuris įtraukia tarpą, atitikmenų. \s
Tabuliacijos simbolis 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( Text, Pattern [, Options ] )

  • Text – būtina. Teksto eilutė, kurią reikia tikrinti.
  • Pattern – būtina. 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į. Pattern turi būti pastovi formulė be jokių kintamųjų, duomenų šaltinių ar kitų dinaminių nuorodų, kurie keičiasi vykdant programą.
  • Options – nebūtina. MatchOptions išvardijimo reikšmių teksto eilutės junginys. Numatyta, kad naudojama MatchOptions.Complete.

Match( Text, Pattern [, Options ] )

  • Text – būtina. Teksto eilutė, kurios atitikmenų reikia ieškoti.
  • Pattern – būtina. 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į. Pattern turi būti pastovi formulė be jokių kintamųjų, duomenų šaltinių ar kitų dinaminių nuorodų, kurie keičiasi vykdant programą.
  • Options – nebūtina. MatchOptions išvardijimo reikšmių teksto eilutės junginys. Numatyta, kad naudojama MatchOptions.Contains.

MatchAll( Text, Pattern [, Options ] )

  • Text – būtina. Teksto eilutė, kurios atitikmenų reikia ieškoti.
  • Pattern – būtina. 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į. Pattern turi būti pastovi formulė be jokių kintamųjų, duomenų šaltinių ar kitų dinaminių nuorodų, kurie keičiasi vykdant programą.
  • Options – nebūtina. 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“. teisingas
IsMatch( TextInput1.Text, "Good bye" ) Patikrina, ar vartotojo įvestis tiksliai atitinka eilutę „Viso gero“. klaidingas
IsMatch( TextInput1.Text, "hello", Contains ) Patikrina, ar vartotojo įvestyje yra žodis „labas“ (atsižvelgiama į raidžių dydį). klaidingas
IsMatch( TextInput1.Text, "hello", Contains & IgnoreCase ) Patikrina, ar vartotojo įvestyje yra žodis „labas“ (neatsižvelgiama į raidžių dydį). teisingas

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 teisingas
IsMatch( "joan@contoso.com", Email ) Ieško el. pašto adreso atitikmens teisingas
IsMatch( "123.456", MultipleDigits & Period & OptionalDigits ) Ieško skaitmenų sekos, taško ir nulio ar kelių skaitmenų atitikmenų. teisingas
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. klaidingas

Reguliarieji reiškiniai

Formulė Aprašas Rezultatas
IsMatch( "986", "\d+" ) Ieško už nulį didesnio sveikojo skaičiaus atitikmenų. teisingas
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. teisingas
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. teisingas
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. teisingas
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. klaidingas
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ų. klaidingas

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. blank
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ų. Pangramos atitikties gretinimas.
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 su IgnoreCase.
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ų). MatchAll pangramai su b, wo, w ir b.
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.

  1. Tuščiame ekrane įterpkite tuščią vertikalųjį valdiklį Gallery.

  2. Galerijos ypatybę Items nustatykite kaip MatchAll( pangram, "\w+" ) arba MatchAll( pangram, MultipleLetters ).

    Elementų galerija.

  3. Galerijos valdiklio viduryje pasirinkite Įtraukti elementą iš skirtuko Įterpimas, kad pasirinktumėte galerijos šabloną.

  4. Į galerijos šabloną įtraukite žymos valdiklį.

  5. Ž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į.

    Teksto ypatybė.