IsMatch-, Match- ja MatchAll-funktio
Koskee seuraavia: Pohjaan perustuvat sovellukset Mallipohjaisten sovellusten Power Pages Power Platform CLI
Testaa vastaavuutta tai poimii tekstimerkkijonon osat kaavan perusteella.
Kuvaus
IsMatch-funktio testaa, vastaako merkkijono hakuarvoa, joka voi koostua normaaleista merkeistä, esimääritetyistä malleista tai säännönmukaisesta lausekkeesta. Match- ja MatchAll-funktiot palauttavat kohdistetun kohteen, mukaan lukien alivastineet.
Käytä IsMatch-funktiota vahvistamaan käyttäjän Text input-ohjausobjektiin syöttämä sisältö. Voit esimerkiksi vahvistaa, onko käyttäjä syöttänyt kelvollisen sähköpostiosoitteen, ennen kuin tulokset tallennetaan tietolähteeseesi. Jos tietue ei vastaa kriteereitäsi, lisää muita ohjausobjekteja, jotka kehottavat käyttäjää korjaamaan sen.
Voit purkaa ensimmäisen vastaavan tekstimerkkijonon Match- ja kaikki vastaavat tekstimerkkijonot MatchAll-menetelmällä. Voit myös poimia alivastaavuuksia monimutkaisten merkkijonojen jäsentämiseksi.
Match palauttaa tietueen ensimmäiselle löydetylle osumalle ja MatchAll palauttaa tietuetaulukon jokaiselle löydetylle osumalle. Tietue tai tietueet sisältävät seuraavat tiedot:
Column | Type | Description |
---|---|---|
nimetty aliottelu tai aliosumat | Viesti | Kullakin nimetyllä alivastaavuudella on oma sarakkeensa. Luo nimetty alivastine käyttämällä (?<name>...) säännönmukaisessa lausekkeessa. Jos nimetyn alivastineen nimi on sama kuin jokin esimääritetyistä sarakkeista (alla), alivastine on ensisijainen ja järjestelmä luo varoituksen. Voit välttää tämän varoituksen nimeämällä alivastineen uudelleen. |
FullMatch | Teksti | Koko vastaavuuksien tekstimerkkijono. |
StartMatch | Luku | Vastineen aloitus kohta syötetekstimerkkijonossa. Merkkijonon ensimmäinen merkki palauttaa 1. |
Osaottelut | Yksisarakkeinen Teksti-taulukko (sarake Value) | Taulukko nimetyistä ja nimeämättömistä alivastineista siinä järjestyksessa, jossa ne näkyvät säännönmukaisessa lausekkeessa. Yleensä nimetyt alivastaavuudet on helpompi käsitellä ja niitä kannustetaan käyttämään. Käytä ForAll-funktiota tai Last( FirstN( ... ) )-funktioita työstääksesi yksittäistä alivastaavuutta. Jos säännöllisessä lausekkeessa ei ole määritetty alivastaavuuksia, tämä taulukko on tyhjä. |
Nämä toiminnot tukevat MatchOptions-toimintoa. Oletusarvoisesti:
- Nämä toiminnot suorittavat kirjainkoon mukaisen vastaavuuden. Käytä MatchOptions.IgnoreCase-toimintoa, kun haluat suorittaa kirjainkoon mukaiset vastaavuudet.
- IsMatch vastaa koko tekstimerkkijonoa (Complete MatchOption), kun taas Match ja MatchAll etsivät vastinetta mistä tahansa tekstimerkkijonon kohdasta (sisältää MatchOption). Käytä Complete-, Contains-, BeginsWith- tai EndsWith-määritteitä tarpeen mukaan.
IsMatch palauttaa arvon tosi , jos tekstimerkkijono vastaa kuviota, tai arvon epätosi , jos se ei vastaa kuviota. Vastine palauttaa tyhjän , jos IsBlank-funktiolla testattavaa vastinetta ei löydy. MatchAll palauttaa tyhjän taulukon, jos IsEmpty-funktiolla testattavaa vastinetta ei löydy.
Jos käytät MatchAll-funktiota tekstimerkkijonon jakamiseen, harkitse Split- funktion käyttämistä, mikä on yksinkertaisempaa ja nopeampaa.
Mallit
Näiden funktioiden käytössä on tärkeää kuvailla malli, johon syötettä verrataan. Malli kuvaillaan merkkijonona, joka voi sisältää yhdistelmän seuraavia:
- Tavalliset merkit, kuten "abc" tai "123".
- Esimääritetyt mallit, kuten Letter, MultipleDigits tai Email. (Match-luettelointi määrittelee nämä mallit.)
- Säännöllisen lausekkeen koodit, kuten "\d+\s+\d+" tai "[a-z]+".
Yhdistä näitä elementtejä käyttämällä merkkijonon yhdistämisoperaattoria &. Esimerkiksi "abc" & Digit & "\s+" on kelvollinen kaava, joka vastaa merkkijonoa, jonka alussa on "a", "b" tai "c", jonka jälkeen on numero väliltä 0–9 ja sitten vähintään yksi välilyöntimerkki.
Tavalliset merkit
Yksinkertaisin malli on sarja tavallisia merkkejä, joille haetaan täyttä vastaavuutta.
Jos esimerkiksi käytetään IsMatch-funktion kanssa, merkkijono "Hello" vastaa mallia "Hello" täsmälleen. Ei enempää tai vähempää. Merkkijono hello! ei vastaa mallia lopussa olevan huutomerkin ja h-kirjaimen väärän kirjainkoon vuoksi. (Katso kohdasta MatchOptions tapoja tämän toiminnon muokkaamiseksi.)
Mallikielessä tietyt merkit on varattu erityistoimintoja varten. Jos haluat käyttää näitä merkkejä mallissa, lisää merkin vasemmalle puolelle \ (kenoviiva) ilmaisemaan, että merkki tulee tulkita kirjaimellisesti tai käytä yhtä esimääritetyistä malleista (esitetty myöhemmin tässä aiheessa). Erikoismerkit on lueteltu tässä taulukossa:
Erikoismerkki | Kuvaus |
---|---|
. | piste |
? | kysymysmerkki |
* | tähti |
+ | plus |
( ) | sulkeet |
[ ] | hakasulkeet |
{ } | kaarisulkeet |
^ | sirkumfleksi |
$ | dollarimerkki |
| | pystyviiva tai putkimerkki |
\ | kenoviiva |
Esimerkiksi Hello?-vastine voidaan löytää käyttämällä mallia Hello\?, jossa kenoviiva on ennen kysymysmerkkiä.
Esimääritetyt mallit
Esimääritettyjen mallien avulla voidaan yksinkertaisesti etsiä vastaavuuksia joko yhdelle merkkijoukon merkeistä tai usean merkin sarjalle. Käytä merkkijonon yhdistämisoperaattoria &omien merkkijonojen yhdistämiseksi Match-luetteloinnin jäsenten kanssa:
Match-luettelointi | Kuvaus | Säännöllinen lauseke |
---|---|---|
Mikä tahansa | Vastaa mitä tahansa merkkiä. | . |
Pilkku | Vastaa pilkkua. | , |
Sormi | Vastaa yhtä numeroa (0–9). | \d |
Sähköposti | Vastaa sähköpostiosoitetta, joka sisältää at-merkin (@) ja toimialuenimen, joka sisältää pisteen (.) | .+\@.+\\.[^\\.]{2,} |
Tavuviiva | Vastaa yhdysmerkkiä. | \- |
Vasen Paren | Vastaa vasenta suljetta ”(”. | \( |
Kirje | Vastaa kirjainta. | \p{L} |
Useita numeroita | Vastaa yhtä tai useampaa numeroa. | \d+ |
Useita kirjaimia | Vastaa yhtä tai useampaa kirjainta. | \p{L}+ |
Useita NonSpace-tiloja | Vastaa yhtä tai useampaa merkkiä, joka ei ole välilyöntimerkki (ei välilyönti, sarkain tai uusi rivi). | \S+ |
Useita tiloja | Vastaa yhtä tai useampaa välilyöntimerkkiä (välilyönti, sarkain tai uusi rivi). | \s+ |
Ei-avaruus | Vastaa yhtä merkkiä, joka ei ole välilyöntimerkki. | \S |
Valinnaiset numerot | Vastaa nollaa, yhtä tai useampaa merkkiä. | \d* |
Valinnaiset kirjeet | Vastaa nollaa, yhtä tai useampaa kirjainta. | \p{L}* |
ValinnaisetNonSpaces-välilyönnit | Vastaa nollaa, yhtä tai useampaa merkkiä, jotka eivät ole välilyöntimerkkejä. | \S* |
Valinnaiset välilyönnit | Vastaa nollaa, yhtä tai useampaa välilyöntimerkkiä. | \s* |
Jakso | Vastaa pistettä (”.”). | \. |
RightParen | Vastaa oikeaa suljetta ”)”. | \) |
Avaruus | Vastaa välilyöntimerkkiä. | \s |
Piikki | Vastaa sarkainmerkkiä. | \t |
Esimerkiksi malli "A" & MultipleDigits vastaa kirjainta ”A”, jonka jälkeen esiintyy yksi tai useampi numero.
Säännönmukaiset lausekkeet
Näiden funktioiden käyttmä malli on säännöllinen lauseke. Yllä kuvatut tavalliset merkit ja esimääritetyt mallit (kuvattu aiemmin tässä aiheessa) auttavat rakentamaan säännönmukaisen lausekkeen.
Säännönmukaiset lausekkeet ovat hyvin tehokkaita, ne ovat saatavilla useissa ohjelmointikielissä ja niitä käytetään useisiin eri tarkoituksiin. Ne voivat myös usein näyttää sattumanvaraiselta välimerkkien jonolta. Tässä artikkelissa ei kuvailla kaikkia säännönmukaisten lausekkeiden ominaisuuksia, mutta verkossa on saatavilla suuri määrä tietoja, oppaita ja työkaluja.
Säännönmukaisille lausekkeille on eri kielioppivaihtoehtoja. Power Apps käyttää JavaScript-kieliopin muunnelmaa. Syntaksin esittely on artikkelissa säännönmukaisen lausekkeen syntaksi. Nimettyjä alivastaavuuksia (kutsutaan joskus nimiksi sieppausryhmiksi) tuetaan:
- Nimetyt alivastaavuudet: (?<name> ...)
- Nimetyt taustaviittaukset: \k<name>
Aiemmin tässä aiheessa Match-luettelointi-taulukossa kukin luettelointi näkyy samalla rivillä kuin sitä vastaava säännöllinen lauseke.
Vastaavuusvalinnat
Voit muokata näiden funktioiden toimintaa määrittämällä yhden tai useamman valinnan, joita voidaan yhdistellä käyttämällä merkkijonon yhdistämisoperaattoria (&).
MatchOptions-luettelointi | Description | Vaikutus säännönmukaiseen lausekkeeseen |
---|---|---|
MatchOptions.BeginsWith | Mallin on vastattava tekstin alkua. | Lisää säännönmukaisen lausekkeen alkuun ^-merkin. |
MatchOptions.Complete | IsMatch-oletusarvo. Tämän mallin täytyy vastata koko tekstimerkkijonoa alusta loppuun. | Lisää säännönmukaisen merkkijonon alkuun ^-merkin ja loppuun $-merkin. |
MatchOptions.Sisältää | Match- ja MatchAll-oletusarvo. Tämän mallin täytyy olla jossakin kohdassa tekstiä mutta sen ei tarvitse olla alussa tai lopussa. | Ei muokkaa säännönmukaista lauseketta. |
MatchOptions.EndsWith | Mallin on vastattava tekstimerkkijonon loppua. | Lisää säännönmukaisen lausekkeen loppuun $-merkin. |
MatchOptions.IgnoreCase | Käsittelee isoja ja pieniä kirjaimia identtisinä. Oletuksena vastaavuuksissa kirjainkoko on merkitsevä. | Ei muokkaa säännönmukaista lauseketta. Tämä vaihtoehto vastaa säännöllisten lausekkeiden i-vakiomääritettä. |
MatchOptions.Multiline | Etsii vastaavuutta useilta riveiltä. | Ei muokkaa säännönmukaista lauseketta. Tämä vaihtoehto vastaa säännöllisten lausekkeiden m-vakiomääritettä. |
MatchAll-menetelmän käyttäminen vastaa säännönmukaisten lausekkeiden vakiotyyppistä g-määritettä.
Syntaksi
IsMatch(Teksti,Kuvio [, Asetukset ])
- Teksti – Pakollinen. Testattava merkkijono.
- Kuvio – Pakollinen. Testattava malli merkkijonona. Yhdistele Match-luetteloinnin määrittelemiä malleja tai anna säännönmukainen lauseke. Kuvion on oltava vakiokaava, jossa ei ole muuttujia, tietolähteitä tai muita dynaamisia viittauksia, jotka muuttuvat sovelluksen suorittamisen aikana.
- Asetukset – Valinnainen. Merkkijonoyhdistelmä MatchOptions-luetteloinnin arvoista. Oletuksena käytetään valintaa MatchOptions.Complete.
Vastine( teksti,kuvio [, asetukset ])
- Teksti – Pakollinen. Vastaavuukisen suhteen testattava merkkijono.
- Kuvio – Pakollinen. Vastaavuuden malli merkkijonona. Yhdistele Match-luetteloinnin määrittelemiä malleja tai anna säännönmukainen lauseke. Kuvion on oltava vakiokaava, jossa ei ole muuttujia, tietolähteitä tai muita dynaamisia viittauksia, jotka muuttuvat sovelluksen suorittamisen aikana.
- Asetukset – Valinnainen. Merkkijonoyhdistelmä MatchOptions-luetteloinnin arvoista. Oletuksena käytetään valintaa MatchOptions.Contains.
MatchAll( Teksti,Kuvio [, Asetukset ])
- Teksti – Pakollinen. Vastaavuukisen suhteen testattava merkkijono.
- Kuvio – Pakollinen. Vastaavuuden malli merkkijonona. Yhdistele Match-luetteloinnin määrittelemiä malleja tai anna säännönmukainen lauseke. Kuvion on oltava vakiokaava, jossa ei ole muuttujia, tietolähteitä tai muita dynaamisia viittauksia, jotka muuttuvat sovelluksen suorittamisen aikana.
- Asetukset – Valinnainen. Merkkijonoyhdistelmä MatchOptions-luetteloinnin arvoista. Oletuksena käytetään valintaa MatchOptions.Contains.
IsMatch-esimerkkejä
Tavalliset merkit
Kuvitellaan, että sovelluksesi sisältää Text input-ohjausobjektin nimeltä TextInput1. Käyttäjä syöttää tähän ohjausobjektiin arvoja, jotka tallennetaan tietokantaan.
Käyttäjä kirjoittaa TextInput1-kohtaan Hello world.
Kaava | Kuvaus | Tulos |
---|---|---|
IsMatch( TextInput1.Text, "Hello world" ) |
Testaa, vastaako käyttäjän syöte tarkalleen merkkijonoa "Hello world". | tosi |
IsMatch( TextInput1.Text, "Good bye" ) |
Testaa, vastaako käyttäjän syöte tarkalleen merkkijonoa "Good bye". | väärä |
IsMatch( TextInput1.Text, "hello", Contains ) |
Testaa, sisältääkö käyttäjän syöte sanan ”hello” (kirjainkoko on merkityksellinen). | väärä |
IsMatch( TextInput1.Text, "hello", Contains & IgnoreCase ) |
Testaa, sisältääkö käyttäjän syöte sanan ”hello” (kirjainkoko ei ole merkityksellinen). | tosi |
Esimääritetyt mallit
Kaava | Kuvaus | Tulos |
---|---|---|
IsMatch( "123-45-7890", Digit & Digit & Digit & Hyphen & Digit & Digit & Hyphen & Digit & Digit & Digit & Digit ) |
Vastaa Yhdysvaltojen sosiaaliturvatunnusta | tosi |
IsMatch( "joan@contoso.com", Email ) |
Vastaa sähköpostiosoitetta | tosi |
IsMatch( "123.456", MultipleDigits & Period & OptionalDigits ) |
Vastaa, kun kyseessä on numerojono, jonka jälkeen on piste ja sitten nolla tai useampia numeroita. | tosi |
IsMatch( "123", MultipleDigits & Period & OptionalDigits ) |
Vastaa, kun kyseessä on numerojono, jonka jälkeen on piste ja sitten nolla tai useampia numeroita. Vastaavuustekstissä ei ole pistettä, joten tälle mallille ei löydy vastaavuutta. | väärä |
Säännönmukaiset lausekkeet
Kaava | Kuvaus | Tulos |
---|---|---|
IsMatch( "986", "\d+" ) |
Vastaa kokonaislukua, joka on suurempi kuin nolla. | tosi |
IsMatch( "1.02", "\d+(\.\d\d)?" ) |
Vastaa positiivista valuuttasummaa. Jos syöte sisältää desimaalierottimen, syötteen täytyy myös sisältää kaksi numeroa sen jälkeen. Esimerkiksi 3.00 on kelvollinen, mutta 3.1 ei. | tosi |
IsMatch( "-4.95", "(-)?\d+(\.\d\d)?" ) |
Vastaa positiivista tai negatiivista valuuttasummaa. Jos syöte sisältää desimaalierottimen, syötteen täytyy myös sisältää kaksi numeroa sen jälkeen. | tosi |
IsMatch( "111-11-1111", "\d{3}-\d{2}-\d{4}" ) |
Vastaa Yhdysvaltojen sosiaaliturvatunnusta. Vahvistaa annetun syötekentän muodon, tyypin ja pituuden. Vastattavan merkkijonon täytyy sisältää kolme numeroa, joiden perässä on viiva, sitten kaksi numeroa, viiva ja neljä numeroa. | tosi |
IsMatch( "111-111-111", "\d{3}-\d{2}-\d{4}" ) |
Sama kuin edellisessä esimerkissä, mutta yksi syötteen viiva on väärässä paikassa. | väärä |
IsMatch( "AStrongPasswordNot", "(?!^[0-9]\*$)(?!^[a-zA-Z]\*$)([a-zA-Z0-9]{8,10})" ) |
Vahvistaa vahvan salasanan, jonka täytyy sisältää kahdeksan, yhdeksän tai 10 merkkiä sekä vähintään yhden numeron ja yhden kirjaimen. Merkkijono ei saa sisältää erikoismerkkejä. | väärä |
Match- ja MatchAll-esimerkkejä
Kaava | Kuvaus | Tulos |
---|---|---|
Match( "Bob Jones <bob.jones@contoso.com>", "<(?<email>" & Match.Email & ")>" |
Poimii vain yhteyshenkilön tietojen sähköpostiosan. | { email: "bob.jones@contoso.com", FullMatch: "<bob.jones@contoso.com>", SubMatches: [ "bob.jones@contoso.com" ], StartMatch: 11 } |
Match( "Bob Jones <InvalidEmailAddress>", "<(?<email>" & Match.Email & ")>" |
Poimii vain yhteyshenkilön tietojen sähköpostiosan. Kelvollista osoitetta ei löydy (@-merkkejä ei ole), joten funktio palauttaa blank. | aihio |
Match( Language(), "(<language>\w{2})(?:-(?<script>\w{4}))?(?:-(?<region>\w{2}))?" ) |
Poimii kielen, komentosarjan ja alueen kielitunnisteesta, jonka Language-funktio palauttaa. Tulokset vastaavat Yhdysvaltoja. Lisää esimerkkejä on Language-toiminnon dokumentaatiossa. Operaattori (?: ryhmittelee merkkejä luomatta toista alivastaavuutta. | { 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)?" ) |
Poimii tunnit, minuutit ja sekunnit ISO 8601 -aikakestoarvosta. Puretut luvut ovat yhä tekstimerkkijonossa. Muunna se Value-funktiolla numeroksi ennen matemaattisten työvaiheiden suorittamista. | { hours: "2", minutes: "1", seconds: "39", FullMatch: "PT2H1M39S", SubMatches:["2","1","39"], StartMatch: 1 } |
Syvennytään viimeiseen esimerkkiin. Jos haluat muuntaa tämän merkkijonon päivämäärä- ja aika-arvoksi käyttämällä Time-funktiota, sinun on välitettävä nimetyt alivastaavuudet yksitellen. Voit tehdä tämän käyttämällä With-toimintoa, joka toimii Match-funktion palauttamalle tietueelle:
With(
Match( "PT2H1M39S", "PT(?:(?<hours>\d+)H)?(?:(?<minutes>\d+)M)?(?:(?<seconds>\d+)S)?" ),
Time( Value( hours ), Value( minutes ), Value( seconds ) )
)
Voit lisätä näihin esimerkkeihin Button-ohjausobjektin, määrittää sen OnSelect-ominaisuuden tähän kaavaan ja valita sitten painikkeen:
Set( pangram, "The quick brown fox jumps over the lazy dog." )
Kaava | Kuvaus | Tulos |
---|---|---|
Match( pangram, "THE", IgnoreCase ) |
Etsi kaikki "THE"-vastaavuudet pangram-muuttujan sisältämästä tekstimerkkijonosta. Merkkijonossa on kaksi vastaavuutta, mutta vain ensimmäinen palautetaan, koska käytät Match- etkä MatchAll-funktiota. SubMatches-sarake on tyhjä, koska alivastaavuuksia ei määritetty. | { FullMatch: "The", SubMatches: [ ], StartMatch: 32 } |
MatchAll( pangram, "the" ) |
Etsi kaikki "the"-vastaavuudet pangram-muuttujan sisältämästä tekstimerkkijonosta. Testissä kirjainkoolla on merkitystä, joten vain toinen "the"-ilmentymä löytyy. SubMatches-sarake on tyhjä, koska alivastaavuuksia ei määritetty. | |
MatchAll( pangram, "the", IgnoreCase ) |
Etsi kaikki "the"-vastaavuudet pangram-muuttujan sisältämästä tekstimerkkijonosta. Tässä tapauksessa testissä ei oteta huomioon kirjainkokoa, joten sanan molemmat esiintymät löytyvät. SubMatches-sarake on tyhjä, koska alivastaavuuksia ei määritetty. | |
MatchAll( pangram, "\b\wo\w\b" ) |
Etsii kaikki kolmikirjaimiset sanat, joiden keskellä on "o". Huomaa, että "brown" jätetään pois, koska se ei ole kolmikirjaiminen sana, joten se ei vastaa kaavaa "\b" (sanan raja). | |
Match( pangram, "\b\wo\w\b\s\*(?<between>\w.+\w)\s\*\b\wo\w\b" ) |
Vastaa kaikkia merkkejä kohtien "fox" ja "dog" välillä. | { between: "jumps over the lazy", FullMatch: "fox jumps over the lazy dog", SubMatches: [ "jumps over the lazy" ], StartMatch: 17 } |
Voit tarkastella MatchAll-tuloksia galleriassa seuraavasti:
Lisää tyhjässä näytössä tyhjä pystysuora Gallery-ohjausobjekti.
Määritä gallerian Items-ominaisuudeksi MatchAll( pangram, "\w+" ) tai MatchAll( pangram, MultipleLetters ).
Valitse valikoiman malli valitsemalla gallerian keskeltä "Lisää kohde Lisää-välilehdeltä".
Lisää valikoiman mallipohjaan Label-ohjausobjekti.
Määritä selitteen Text-ominaisuudeksi ThisItem.FullMatch.
Galleria täytetään esimerkkitekstin jokaisella sanalla. Muuta gallerian mallin ja Selite-ohjausobjektin kokoa, jotta näet kaikki sanat yhdessä näytössä.