Jagamisviis:


Funktsioonid IsMatch, Match ja MatchAll

Kehtib: Lõuendirakendused Mudelipõhised rakendused Power Platform CLI

Testib vasteid või ekstraktib mustril põhinevaid tekstistringi osi.

Kirjeldus

Funktsioon IsMatch kontrollib, kas tekstistring vastab mustrile, mis võib koosneda tavalistest märkidest, eelmääratletud mustritest või tavalisest avaldisest. Funktsioon Match ja MatchAll tagastavad, mis oli vastendatud, sealhulgas alamvasted.

Kasutage funkstiooni IsMatch, et kinnitada, mida kasutaja on sisestanud juhtelementi tekstisisend. Näiteks saate kinnitada, kas kasutaja on sisestanud sobiva meiliaadressi enne, kui tulemus salvestatakse teie andmeallikassse. Kui kirje ei vasta teie kriteeriumidele, lisage muid juhtelemente, mis ajendavad kasutajat kirjet parandama.

Kasutage funktsiooni Match, et ekstraktida esimene tekstistring, mis vastab mustrile ja funktsiooni MatchAll, et ekstraktida kõik vastavad tekstistringid. Saate ka ekstraktida alamvasted, et sõeluda keerulisi stringe.

Funktsioon Match tagastab esimese leitud vastega seotud teabekirje ja funktsioon MatchAll tagastab iga leitud vaste jaoks kirjete tabeli. Kirje või kirjed sisaldavad järgmist.

Column Tüüp Kirjeldus
nimega alamvaste või alamvasted Tekstsõnum Igal nimega alamvastel on oma veerg. Looge nimega alamvaste, kasutades (?<nimi>...) regulaaravaldises. Kui nimega allvastel on sama nimi, kui ühel eelmääratletud veergudest (allpool), siis on allvaste ülimuslik ja luuakse hoiatus. Selle hoiatuse vältimiseks nimetage allvaste ümber.
FullMatch Tekst Kogu vastendatud tekstistring.
StartMatch Number Vaste alguspunkt sisendi tekstistringi sees. Stringi esimene täht tagastab 1.
SubMatches Teksti (veerg Väärtus) üheveeruline tabel Nimega ja nimeta allvasted järjekorras, milles nad kuvatakse regulaaravaldises. Üldiselt on nimega allvastetega hõlpsam töötada ja julgustame neid kasutama. Kasutage funktsiooni ForAll või funktsiooni Last( FirstN( ... ) ), et töötada konkreetse allvastega. Kui regulaaravaldises ei määratleta allvasteid, on see tabel olemas, kuid tühi.

Need funktsioonid toetavad MatchOptions. Vaikimisi

  • Need funktsioonid täidavad tõstutundlikku vastet. Kasutage MatchOptions.IgnoreCase’i tõstutundlike vastete tegemiseks.
  • IsMatch vastendab terve tekstistringi (Complete MatchOption), kui Match ja MatchAll otsivad vastet kõikjalt tekstistringis (Contains MatchOption). Kasutage funktsioone Complete, Contains, BeginsWith või EndsWith nagu sobib teie stsenaariumiga.

IsMatch tagastab väärtuse tõene, kui tekstistring vastab mustrile, või väär, kui ei vasta. Match tagastab väärtuse tühi, kui vastet ei leitud, mida saab testida funktsiooniga IsBlank. MatchAll tagastab tühja tabeli, kui ei leita vastet, mida saab testida funktsiooniga IsEmpty.

Kui kasutate funktsiooni MatchAll tekstistringi tükeldamiseks, kaaluge funktsiooni Split kasutamist, mis on lihtsam ja kiirem.

Mustrid

Nende funktsioonide kasutamise võti on vastava mustri kirjeldamises. Saate kirjeldada mustrit tekstistringis kombinatsioonina:

  • Tavalised tähemärgid, nagu „abc” või „123”.
  • Eelmääratletud mustrid Letter, MultipleDigits või Email. (Loetelu Match defineerib need mustrid.)
  • Regulaaravaldise koodid, nagu "\d+\s+\d+" või "[a-z]+".

Kombineerige need elemendid, kasutades stringi ühendamise tehtemärki &. Näiteks "abc" & Digit &; "\s+" on kehtiv muster, mis vastab märkidele "a", "b" ja "c" , millele järgneb number vahemikus 0 kuni 9, millele järgneb vähemalt üks tühikmärk.

Tavalised märgid

Lihtsaim muster on jada tavalistest märkidest, mis on täpselt vastendatud.

Näiteks kui seda kasutatakse koos funktsiooniga IsMatch, vastab string "Hello" mustrile "Tere" täpselt. Mitte rohkem ega vähem. String „hello!” ei vasta mustrile, kuna lõpus on hüüumärk ja algustähe suurus on „h” jaoks vale. (Vt MatchOptions, kuidas seda käitumist muuta.)

Mustrite keeles on teatud märkidele reserveeritud eriotstarve. Nende märkide kasutamiseks tuleb lisada eesliite märk \ (kurakriips), mis näitab, et seda märki tuleb võtta tema otseses tähenduses, või kasutada mõnda eelmääratletud mustrit, mida on kirjeldatud selles teemas hiljem. Tabelis on toodud erimärgid.

Erimärk Kirjeldus
. täpp või punkt
? küsimärk
* Tärn
+ plus
( ) sulud
[ ] nurksulud
{ } looksulud
^ katus
$ dollari märk
| vertikaalne riba või toru
\ kurakriips

Näiteks saate vastendada „Hello?”, kasutades mustrit „Hello\?” kurakriipsuga enne küsimärki.

Eelmääratletud mustrid

Eelmääratletud mustrid loovad lihtsa viisi vastendada kas ühe märkide kogumi või mitu tähemärgi jada. Kasutage stringide ühendamise tehtemärki & oma tekstistringide ühendamiseks mängureeglite liikmetega :

Vastendamise loetelu Kirjeldus Regulaaravaldis
Any Vastab suvalisele märgile. .
Comma Vastab komale. ,
Digit Vastab ühele numbrile (0 kuni 9). \d
Email Vastab meiliaadressile, mis sisaldab @-sümbolit („@”) ja domeeninime, mis sisaldab punkti („.”) .+\@.+\\.[^\\.]{2,}
Hyphen Vastab sidekriipsule. \-
LeftParen Vastab vasakpoolsele sulule "(". \(
Letter Vastab tähele. \p{L}
MultipleDigits Vastab ühele või mitmele numbrile. \d+
MultipleLetters Vastab ühele või mitmele tähele. \p{L}+
MultipleNonSpaces Vastendab ühele või mitmele märgile, mis ei lisa tühikut (mitte tühikut, tabulaatorit ega reapiiri). \S+
MultipleSpaces Vastab ühele või mitmele märgile, mis ei lisa tühikut (mitte tühikut, tabulaatorit ega reapiiri). \s+
NonSpace Vastab ühele märgile, mis ei lisa tühikut. \S
OptionalDigits Vastab nullile, ühele või mitmele numbrile. \d*
OptionalLetters Vastab nullile, ühele või mitmele tähele. \p{L}*
OptionalNonSpaces Vastab nullile, ühele või mitmele märgile, mis ei lisa tühikut. \S*
OptionalSpaces Vastab nullile, ühele või mitmele märgile, mis lisavad tühiku. \s*
Period Vastab lõpupunktile või punktile ("."). \.
RightParen Vastab parempoolsele sulule ")". \)
Space Vastab märgile, mis lisab tühiku. \s
Tabeldusklahv (Tab) Ühtib vahekaardi märkega. \t

Näiteks muster "A" & MultipleDigits vastab tähele "A", millele järgneb üks või mitu numbrit.

Regulaaravaldised

Muster, mida need funktsioonid kasutavad, on regulaaravaldis. Tavalised märgid ja eelmääratletud mustrid, mis on selles teemas varem kirjeldatud, aitavad luua regulaaravaldisi.

Regulaaravaldised on väga võimsad, saadaval paljudes programmeerimiskeeltes ja neid kasutatakse väga erinevatel eesmärkidel. Need võivad sageli tunduda ka kirjavahemärkide juhusliku jadana. See artikkel ei kirjelda kõiki regulaaravaldiste aspekte, kuid veebis on saadaval rohkesti teavet, juhendeid ja tööriistu.

Regulaaravaldised on saadaval erinevates murretes ja Power Apps kasutab JavaScripti murret. Vt regular-expression syntax süntaksisse sissejuhatust. Nimega allvasteid (mõnikord nimetatakse ka nimega hõiverühmad) toetatakse.

  • Nimega allvasted: (?<nimi> ...)
  • Nimega tagasiviited: \k<name>

Match loetelu tabelis, varem selles teemas, iga loetelu kuvatakse samas reas, nagu ta vastaks regulaaravaldisele.

Vastendussuvandid

Saate muuta nende funktsioonide käitumist, määrates ühe või mitu suvandit, mida saate kombineerida, kasutades stringi ühendamise tehtemärki (&).

MatchOptions loetelu Kirjeldus Mõju regulaaravaldisele.
MatchOptions.BeginsWith Muster peab vastama teksti algusest. Lisab ^ regulaaravaldise algusesse.
MatchOptions.Complete Funktsiooni IsMatch vaiketulem. Muster peab vastama tervele stringile, algusest lõpuni. Lisab ^ algusesse ja $ regulaaravaldise lõppu.
MatchOptions.Sisaldab Funktsioonide Match ja MatchAll vaikeväärtused. Muster peab ilmuma kusagile teksti, kuid ei pea seda alustama ega lõpetama. Ei muuda tavalist avaldist.
MatchOptions.EndsWith Muster peab vastama tekstistringi lõpule. Lisab $ regulaaravaldise lõppu.
MatchOptions.IgnoreCase Kohtleb suur-ja väiketähti identsena. Vaikimisi on vastendamine tõstutundlik. Ei muuda tavalist avaldist. See suvand võrdub standardse i-muunuriga regulaaravaldiste jaoks.
MatchOptions.Multiline Kattub mitme rea vahel. Ei muuda tavalist avaldist. See suvand võrdub standardse m-muunuriga regulaaravaldiste jaoks.

Funktsioon MatchAll on samaväärne standardi g-muundur kasutamisega regulaaravaldiste jaoks.

Süntaks

IsMatch( Text, Pattern [, Options ] )

  • Tekst – nõutav. Tekstistring kontrollimiseks.
  • Muster – nõutav. Mustrit, mida saab testida tekstistringina. Ühendage eelmääratletud mustrid, miĺle loetelu Vaste määratleb või andke regulaaravaldis. Muster peab olema konstantne valem ilma muutujate, andmeallikate või muude dünaamiliste viideteta, mis muutuvad rakenduse töötamise ajal.
  • Suvandid – valikuline. Tekstistringi kombinatsioon MatchOptions loetelu väärtustest. Vaikimisi kasutatakse MatchOptions.Complete.

Match( Text, Pattern [, Options ] )

  • Tekst – nõutav. Tekstistring vaste leidmiseks.
  • Muster – nõutav. Muster, mida vastendada tekstistringina. Ühendage eelmääratletud mustrid, miĺle loetelu Vaste määratleb või andke regulaaravaldis. Muster peab olema konstantne valem ilma muutujate, andmeallikate või muude dünaamiliste viideteta, mis muutuvad rakenduse töötamise ajal.
  • Suvandid – valikuline. Tekstistringi kombinatsioon MatchOptions loetelu väärtustest. Vaikimisi kasutatakse MatchOptions.Contains.

MatchAll( Text, Pattern [, Options ] )

  • Tekst – nõutav. Tekstistring vaste leidmiseks.
  • Muster – nõutav. Muster, mida vastendada tekstistringina. Ühendage eelmääratletud mustrid, miĺle loetelu Vaste määratleb või andke regulaaravaldis. Muster peab olema konstantne valem ilma muutujate, andmeallikate või muude dünaamiliste viideteta, mis muutuvad rakenduse töötamise ajal.
  • Suvandid – valikuline. Tekstistringi kombinatsioon MatchOptions loetelu väärtustest. Vaikimisi kasutatakse MatchOptions.Contains.

IsMatch näited

Tavalised märgid

Kujutlege, et teie rakendus sisaldab juhtelementi tekstisisend nimega Tekstisisend1. Kasutaja sisestab sellesse juhtelementi väärtused, mis salvestatakse andmebaasi.

Kasutaja tipib Tere maailm juhtelementi Tekstisisend1.

Valem Kirjeldus Tulem
IsMatch( TextInput1.Text, "Hello world" ) Kontrollib, kas kasutaja sisestus vastab täpselt stringile "Tere maailm". tõene
IsMatch( TextInput1.Text, "Good bye" ) Kontrollib, kas kasutaja sisestus vastab täpselt stringile "Head aega". väär
IsMatch( TextInput1.Text, "hello", Contains ) Kontrollib, kas kasutaja sisestus sisaldab sõna "tere" (tõstutundlik). väär
IsMatch( TextInput1.Text, "hello", Contains & IgnoreCase ) Kontrollib, kas kasutaja sisestus sisaldab sõna "tere" (mittetõstutundlik). tõene

Eelmääratletud mustrid

Valem Kirjeldus Tulem
IsMatch( "123-45-7890", Digit & Digit & Digit & Hyphen & Digit & Digit & Hyphen & Digit & Digit & Digit & Digit ) Vastab USA sotsiaalkindlustuse numbritele tõene
IsMatch( "joan@contoso.com", Email ) Vastab meiliaadressile tõene
IsMatch( "123.456", MultipleDigits & Period & OptionalDigits ) Vastab numbrite jadale, punktile ja seejärel nullile või rohkematele numbritele. tõene
IsMatch( "123", MultipleDigits & Period & OptionalDigits ) Vastab numbrite jadale, punktile ja seejärel nullile või rohkematele numbritele. Punkti ei kuvata tekstis vastena, nii et see muster ei ühti. väär

Regulaaravaldised

Valem Kirjeldus Tulem
IsMatch( "986", "\d+" ) Vastab nullist suuremale täisarvule. tõene
IsMatch( "1.02", "\d+(\.\d\d)?" ) Vastab positiivse valuuta summale. Kui sisend sisaldab kümnendkoha punkti, peab sisend sisaldama ka kahte numbrilist märki pärast koma. Näiteks 3.00 on sobiv, kuid 3.1 pole. tõene
IsMatch( "-4.95", "(-)?\d+(\.\d\d)?" ) Vastab positiivse või negatiivse valuuta summale. Kui sisend sisaldab kümnendkoha punkti, peab sisend sisaldama ka kahte numbrilist märki pärast koma. tõene
IsMatch( "111-11-1111", "\d{3}-\d{2}-\d{4}" ) Vastab USA sotsiaalkindlustuse numbritele Valideerib esitatud sisendivälja vormingu, tüübi ja pikkuse. Vastendatav string peab koosnema kolmest numbrist, millele järgneb sidekriips, ja seejärel kaks numbrilist märki, millele järgneb kriips, ja seejärel neli numbrilist märki. tõene
IsMatch( "111-111-111", "\d{3}-\d{2}-\d{4}" ) Sarnane eelmise näitega, kuid sisendis on üks sidekriips teises kohas. väär
IsMatch( "AStrongPasswordNot", "(?!^[0-9]\*$)(?!^[a-zA-Z]\*$)([a-zA-Z0-9]{8,10})" ) Valideerib tugeva parooli, mis peab sisaldama kaheksat, üheksat või 10 märki, lisaks vähemalt ühe numbri ja vähemalt ühe tähestikulise märgi. String ei tohi sisaldada erimärke. väär

Match ja MatchAll näited

Valem Kirjeldus Tulem
Match( "Bob Jones <bob.jones@contoso.com>", "<(?<email>" & Match.Email & ")>" Ekstraktib kontaktteabest ainult meiliaadressi. {
meiliaadress: "bob.jones@contoso.com",
FullMatch: "<bob.jones@contoso.com>",
SubMatches: [ "bob.jones@contoso.com" ],
StartMatch: 11
}
Match( "Bob Jones <InvalidEmailAddress>", "<(?<email>" & Match.Email & ")>" Ekstraktib kontaktteabest ainult meiliaadressi. Lubatud aadressi ei leita (@ märki pole), seega funktsioon tagastab väärtuse blank. tühi
Match( Language(), "(<language>\w{2})(?:-(?<script>\w{4}))?(?:-(?<region>\w{2}))?" ) Ekstraktib keele-, skripti- ja piirkonna osa keelesildist, mille funktsioon Language tagastab. Need tulemid kajastavad Ameerika Ühendriike; vt rohkem näiteid Language function documentation. Tehtemärk (?: rühmitab märgid ilma teist allvastet loomata. {
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)?" ) Ekstraktib tunnid, minutid ja sekundid ISO 8601 kestuse väärtusest. Ekstraheeritud numbrid jäävad alles tekstistringi; kasutage funktsiooni Value, et teisendada see arvuks enne matemaatiliste toimingute teostamist. {
hours: "2",
minutes: "1",
seconds: "39",
FullMatch: "PT2H1M39S",
SubMatches:["2","1","39"],
StartMatch: 1
}

Uurime viimast näidet. Kui soovite teisendada selle stringi kuupäeva/kellaaja väärtuseks, kasutades funktsiooni Time, peate nimega allvasted ükshaaval läbima. Selle tegemiseks saate kasutada funktsiooni With kirjel, mille Match tagastab:

With(
    Match( "PT2H1M39S", "PT(?:(?<hours>\d+)H)?(?:(?<minutes>\d+)M)?(?:(?<seconds>\d+)S)?" ),
   Time( Value( hours ), Value( minutes ), Value( seconds ) )
)

Nende näidete korral lisage juhtelement nupp, määrake selle OnSelect atribuut ja seejärel valige nupp.

Set( pangram, "The quick brown fox jumps over the lazy dog." )
Valem Kirjeldus Tulem
Match( pangram, "THE", IgnoreCase ) Leiab kõik "THE" vasted tekstistringis, mida sisaldab muutuja pangram. String sisaldab kahte vastet, kuid tagastatakse ainult esimene, kuna kasutate funktsiooni Match ja mitte MatchAll. Veerg SubMatches on tühi, sest allvasteid pole määratletud. {
FullMatch: "The",
SubMatches: [ ],
StartMatch: 32
}
MatchAll( pangram, "the" ) Leiab kõik "the" vasted tekstistringis, mida sisaldab muutuja pangram. Test on tõstutundlik, seega leitakse ainult teine "the" eksemplar. Veerg SubMatches on tühi, sest allvasteid pole määratletud. MatchAll pangrami jaoks.
MatchAll( pangram, "the", IgnoreCase ) Leiab kõik "the" vasted tekstistringis, mida sisaldab muutuja pangram. Sellisel juhul pole test tõstutundlik, seega leitakse mõlema sõna esinemisjuhud. Veerg SubMatches on tühi, sest allvasteid pole määratletud. MatchAll koos IgnoreCase.
MatchAll( pangram, "\b\wo\w\b" ) Leiab kõik kolmetähelist sõna, mille keskel on "o". Pange tähele, et "brown" on välistatud, kuna see ei ole kolmetäheline sõna ja seetõttu ei sobi "\b" (sõnapiir). MatchAll for pangram koos b, wo ja w ja b.
Match( pangram, "\b\wo\w\b\s\*(?<between>\w.+\w)\s\*\b\wo\w\b" ) Vastab kõikidele märkidele "fox" ja "dog" vahel. {
between: "jumps over the lazy",
FullMatch: "fox jumps over the lazy dog",
SubMatches: [ "jumps over the lazy" ],
StartMatch: 17
}

MatchAll tulemite kuvamiseks galeriis:

  1. Tühjal ekraanil lisage tühi vertikaalne juhtelement galerii.

  2. Seadke galerii atribuudi Üksused väärtuseks MatchAll( pangram, "\w+" ) või MatchAll( pangram, MultipleLetters ).

    Üksuste galerii.

  3. Valige juhtelemendi galerii keskosa käsk Lisa üksus vahekaardilt Sisesta, et valida galerii mall.

  4. Lisage galerii mallile juhtelement silt.

  5. Seadke sildi atribuudi Tekst väärtuseks ThisItem.FullMatch.

    Galerii täidetakse kõikide sõnadega meie näitetekstis. Muutke galerii malli ja juhtelemendi silt suurust, et näha kõiki sõnu ühel ekraanil.

    Tekstiatribuut.