IsMatch, Match és MatchAll függvény
A következőkre vonatkozik: Vászonalapú alkalmazások
Modellvezérelt alkalmazások
Power Pages
Power Platform CLI
Szöveges karkaterláncban keres egyezést vagy pontosan egyező részeket adott minta alapján.
Ismertetés
Az IsMatch függvény ellenőrzi, hogy egy szöveges sztring megfelel-e egy olyan mintának, mely normál karaktereket, előre meghatározott mintákat vagy egy reguláris kifejezést tartalmazhat. A Match és a MatchAll függvény az egyező elemeket adja vissza, beleértve az alegyezéseket is.
Az IsMatch függvénnyel ellenőrizheti, hogy a felhasználó mit adott meg egy Szövegbevitel vezérlőelemben. Ellenőrizheti például az eredmény az adatforrásba való mentése előtt, hogy a felhasználó érvényes e-mail-címet adott-e meg. Ha a bejegyzés nem felel meg a feltételeknek, hozzáadhat további vezérlőelemeket, melyek a bejegyzés javítására kérik a felhasználót.
A Match használatával kinyerheti az első szöveges karakterláncot, amely megfelel egy mintázatnak és a MatchAll függvénnyel az összes egyező szöveges karakterlánc nyerheti ki. Az összetett karakterláncok értelmezéséhez az alegyezéseket is kinyerheti.
A Match az első talált egyezés adatait adja vissza, a MatchAll pedig az összes talált egyezés rekordtáblázatát. A rekord vagy rekordok a következőket tartalmazzák:
Column | Type | Description |
---|---|---|
Megnevezett alegyezés vagy alegyezések | Szöveges | Minden egyes megnevezett alegyezésnek saját oszlopa lesz. Hozzon létre egy névvel ellátott alegyezést a (?<name>…) elemmel a reguláris kifejezésben. Ha egy névvel ellátott alegyezésnek ugyanaz a neve, mint az egyik előre definiált oszlopok egyikének (lent), az alegyeztetés elsőbbséget élvez, és egy figyelmeztetés jön létre. A figyelmeztetés elkerüléséhez nevezze át az alegyeztetést. |
FullMatch | Szöveg | Az összes egyező szöveges karakterlánc. |
StartMatch | Szám | Az egyezőség kezdő pozíciója a bevitt szöveges karakterláncon belül. A sztring első karaktere 1-et ad vissza. |
Almérkőzések | Egyoszlopos táblázatos szöveg (oszlop Érték) | A nevezett és nem elnevezett alegyezések táblázata a reguláris kifejezésben megjelenő sorrendjüknek megfelelő sorrendben. Általánosságban elmondható, hogy a névvel rendelkező alegyezések egyszerűbben használhatók, és ezek használatát javasoljuk. Használja a ForAll függvényt vagy a Last( FirstN( … ) ) függvényt különálló alegyezésekkel történő munkára. Ha a reguláris kifejezésben nem határoztak meg alegyezéseket, akkor ez a tábla megjelenik, de üresen. |
Ezek a függvények támogatják a MatchOptions elemet. Alapértelmezésben:
- Ezek a függvények kis-és nagybetűket megkülönböztető egyeztetéseket hajtanak végre. A MatchOptions.IgnoreCase használatával kis- és nagybetűket nem megkülönböztető mérkőzéseket hajthat végre.
- Az IsMatch a teljes szöveges karakterláncot egyezteti (Complete MatchOption), míg a Match és a MatchAll a szöveges karakterlánc bármely pontján keres egyezést (tartalmazza a MatchOption értéket). Az esetnek megfelelően használja a CompleteContains, BeginsWith vagy EndsWith elemeket.
Az IsMatch igaz értéket ad vissza , ha a szöveges karakterlánc megfelel a mintának, vagy hamis , ha nem. A Match függvény üres értéket ad vissza , ha nem található az IsBlank függvénnyel tesztelhető egyezés. A MatchAll függvény üres táblát ad vissza, ha nem található az IsEmpty függvénnyel tesztelhető egyezés.
Ha a MatchAll segítségével oszt fel egy szöveges karakterláncot, érdemes megfontolni a Split függvény használatát, amely egyszerűbben használható és gyorsabb is.
Minták
A függvények használatához a legfontosabb az egyeztetni kívánt minta megadása. A mintát egy szöveges sztringben adhatja meg a következők kombinációjaként:
- Normál karakterek, mint például az "abc" vagy az "123".
- Előre meghatározott minták, mint például a Betű, MultipleDigits vagy E-mail. (Ezek a minták a Match enumerálásban vannak meghatározva.)
- Reguláris kifejezés kódjai, mint például a "\d+\s+\d+" vagy az "[a – z] +".
Kombinálja ezeket az elemeket a karakterlánc-összefűző operátorral . Például az "abc" & Digit & "\s+" egy érvényes minta, amely megfelel az "a", "b" és "c" karaktereknek, amelyeket egy 0 és 9 közötti számjegy követ, amelyet legalább egy szóköz karakter követ.
Normál karakterek
A legegyszerűbb minta normál karakterek egy sorozata, mellyel pontos egyezést kell keresni.
Ha például a IsMatch függvényt használja, a „Hello” karakterlánc pontosan egyezik a „Hello” mintával. Annál nem több, és nem is kevesebb. A „hello!” sztring nem felel meg a mintának, mert a végén felkiáltójel szerepel, illetve mert nem nagy „h” szerepel benne. (A működés módosításával kapcsolatban lásd az MatchOptions című szakaszt.)
A mintanyelvben bizonyos karakterek speciális célokra vannak fenntartva. Ezen karakterek használatához lássa el az adott karaktert \ (fordított perjel) előtaggal annak jelölésére, hogy a következő karaktert szó szerint kell értelmezni, vagy használja a témakörben később ismertetett előre meghatározott minták egyikét. A speciális karakterek a következő táblázatban vannak felsorolva:
Speciális karakter | Description |
---|---|
. | pont |
? | kérdőjel |
* | csillag |
+ | plusz |
( ) | kerek zárójelek |
[ ] | szögletes zárójelek |
{ } | kapcsos zárójelek |
^ | caret |
$ | dollárjel |
| | függőleges vonal |
\ | fordított perjel |
A "Hello\?" minta segítségével például megfeleltetheti a „Hello?” szöveget, egy fordított perjellel a kérdőjel előtt.
Előre meghatározott minták
Az előre meghatározott mintákkal egyszerűen egyeztethető egy karakterkészlet vagy több karakter sorozata. Használja a karakterlánc-összefűző operátort & a saját szöveges karakterláncok kombinálásához a Match tagjaival felsorolás:
Match enumerálás | Ismertetés | Reguláris kifejezés |
---|---|---|
Bármely | Tetszőleges karakterre illeszkedik. | . |
Vessző | Egy vesszőre illeszkedik. | , |
Számjegy | Egyetlen („0” és „9” közötti) számjegyre illeszkedik. | \d |
Egy olyan e-mail-címre illeszkedik, amely tartalmaz egy kukacjelet („@”), illetve egy pontot („.”) tartalmazó tartománynevet. | .+\@.+\\.[^\\.]{2,} |
|
Kötőjel | Egy kötőjelre illeszkedik. | \- |
LeftParen | Egy nyitó zárójelre „(” illeszkedik. | \( |
Levél | Egy betűre illeszkedik. | \p{L} |
Többjegyű számjegyek | Egy vagy több számjegyre illeszkedik. | \d+ |
Többszörös betűk | Egy vagy több betűre illeszkedik. | \p{L}+ |
MultipleNonSpaces | Egy vagy több olyan karakterre illeszkedik, amely nem szúr be térközt (nem szóköz, tabulátor, nem soremelés). | \S+ |
MultipleSpaces | Egy vagy több olyan karakterre illeszkedik, amely térközt szúr be (szóköz, tabulátor vagy sortörés). | \s+ |
Nem-tér | Egyetlen olyan karakterre illeszkedik, amely nem szúr be térközt. | \S |
OptionalDigits | Nulla, egy vagy több számjegyre illeszkedik. | \d* |
Nem kötelezőBetűk | Nulla, egy vagy több betűre illeszkedik. | \p{L}* |
Nem kötelezőNonSpaces | Nulla, egy vagy több olyan karakterre illeszkedik, amely nem szúr be térközt. | \S* |
OptionalSpaces | Nulla, egy vagy több olyan karakterre illeszkedik, amely térközt szúr be. | \s* |
Periódus | Egy pontra („.”) illeszkedik. | \. |
Jobboldali | Egy záró zárójelre „(” illeszkedik. | \) |
Tér | Egy olyan karakterre illeszkedik, amely térközt szúr be. | \s |
Tabulátor | Tetszőleges tabulátor karakternek felel meg. | \t |
Például az "A" & MultipleDigits minta megegyezik az "A" betűvel, amelyet egy vagy több számjegy követ.
Reguláris kifejezések
Ezek által függvények által használt minta egy reguláris kifejezés. A témakör korábbi részében leírt normál karakterekből és előre meghatározott mintákból reguláris kifejezések hozhatók létre.
A reguláris kifejezések nagyon hatékonyak, számos programozási nyelvben elérhetők, és számos különböző célra használhatók. Gyakran az írásjelek véletlenszerű sorozatát is tűnnek. Ebben a cikkben nincs lehetőség minden szempontból leírni a reguláris kifejezéseket, de az interneten bőségesen érhetők el információk és oktatóanyagok, melyek a segítségére lehetnek.
A reguláris kifejezéseknek különböző dialektusai vannak, és a Power Apps a JavaScript-dialektus változatát használja. Lásd a reguláris kifejezés szintaxisát című részt a szintaxis bemutatáshoz. A nevezett alegyezések (más néven elnevezett belefoglalási csoportok) támogatottak:
- Nevezett alegyezések: (?<név> ...)
- Nevezett visszahivatkozások: \k<név>
A témakör korábbi Match táblázatában minden enumeráció ugyanabban a sorban jelenik meg, mint a megfelelő reguláris kifejezés.
Egyeztetési beállítások
Ezeknek a függvényeknek a viselkedését egy vagy több beállítás megadásával módosíthatja, amelyeket a karakterlánc-összefűző operátorral (&) kombinálhat.
MatchOptions enumeráció | Description | Reguláris kifejezésre gyakorolt hatás |
---|---|---|
MatchOptions.BeginsWith | A mintának a szöveg elejétől kezdve kell illeszkednie. | Egy ^ jelet szúr be a reguláris kifejezés elejére. |
MatchOptions.Complete | Alapértelmezés az IsMatch függvényhez. A mintának a teljes szöveges sztringgel meg kell egyeznie, elejétől a végéig. | A reguláris kifejezés elejére egy ^, a végére pedig egy $ jelet szúr be. |
MatchOptions.Tartalmazza | Alapértelmezett a Match és a MatchAll függvényekhez. A mintának valahol meg kell jelennie a szövegben, de nem szükséges azzal kezdődnie vagy végződnie. | Nem módosítja a reguláris kifejezést. |
MatchOptions.EndsWith | A mintának a szöveges sztring végéig kell illeszkednie. | Egy $ jelet szúr be a reguláris kifejezés végére. |
MatchOptions.IgnoreCase | A kis-és nagybetűket azonosként kezeli. Az egyeztetés alapértelmezés szerint megkülönbözteti a kis- és nagybetűket. | Nem módosítja a reguláris kifejezést. Ez a beállítás megegyezik a reguláris kifejezésekhez használt szabványos „i” módosítóval. |
MatchOptions.Többszörös vonal | Több soron keresztül végez egyeztetést. | Nem módosítja a reguláris kifejezést. Ez a beállítás megegyezik a reguláris kifejezésekhez használt szabványos „m” módosítóval. |
A MatchAll használata egyenértékű a szokásos „g” módosító használatával a reguláris kifejezésekhez.
Szintaxis
IsMatch( szöveg; minta [; beállítások ] )
- Szöveg – Kötelező. A vizsgálni kívánt szöveges sztring.
- Minta – Kötelező. A vizsgálni kívánt minta, szöveges sztring formájában. Összefűzhet a Match enumerációban definiált előre meghatározott mintákat, vagy megadhat egy reguláris kifejezést. A mintának állandó képletnek kell lennie, változók, adatforrások vagy más dinamikus hivatkozások nélkül, amelyek az alkalmazás futtatásával változnak.
- Opciók – Nem kötelező. A MatchOptions enumeráció értékeinek szöveges sztringben megadott kombinációja. A rendszer alapértelmezés szerint a MatchOptions.Complete beállítást használja.
Match( Szöveg; Minta [; Beállítások ] )
- Szöveg – Kötelező. Az egyeztetni kívánt szöveges sztring.
- Minta – Kötelező. Az egyeztetni kívánt minta, szöveges sztring formájában. Összefűzhet a Match enumerációban definiált előre meghatározott mintákat, vagy megadhat egy reguláris kifejezést. A mintának állandó képletnek kell lennie, változók, adatforrások vagy más dinamikus hivatkozások nélkül, amelyek az alkalmazás futtatásával változnak.
- Opciók – Nem kötelező. A MatchOptions enumeráció értékeinek szöveges sztringben megadott kombinációja. A rendszer alapértelmezés szerint a MatchOptions.Contains beállítást használja.
MatchAll( Szöveg; Minta [; Beállítások ] )
- Szöveg – Kötelező. Az egyeztetni kívánt szöveges sztring.
- Minta – Kötelező. Az egyeztetni kívánt minta, szöveges sztring formájában. Összefűzhet a Match enumerációban definiált előre meghatározott mintákat, vagy megadhat egy reguláris kifejezést. A mintának állandó képletnek kell lennie, változók, adatforrások vagy más dinamikus hivatkozások nélkül, amelyek az alkalmazás futtatásával változnak.
- Opciók – Nem kötelező. A MatchOptions enumeráció értékeinek szöveges sztringben megadott kombinációja. A rendszer alapértelmezés szerint a MatchOptions.Contains beállítást használja.
IsMatch példák
Normál karakterek
Tegyük fel, hogy az alkalmazásban található egy TextInput1 nevű Szövegbevitel vezérlőelem. A felhasználó értékeket adhat meg ebben a vezérlőelemben egy adatbázisban való tárolás céljából.
A felhasználó beírja a TextInput1 vezérlőelembe, hogy Helló, világ.
Képlet | Ismertetés | Eredmény |
---|---|---|
IsMatch( TextInput1.Text, "Hello world" ) |
Azt ellenőrzi, hogy a felhasználói bevitel megegyezik-e a „Helló, világ” sztringgel | igaz |
IsMatch( TextInput1.Text, "Good bye" ) |
Azt ellenőrzi, hogy a felhasználói bevitel megegyezik-e a „Viszlát” sztringgel. | téves |
IsMatch( TextInput1.Text, "hello", Contains ) |
Azt ellenőrzi, hogy a felhasználói bevitel tartalmazza-e a "helló" szót (a kis- és nagybetűk megkülönböztetésével). | téves |
IsMatch( TextInput1.Text, "hello", Contains & IgnoreCase ) |
Azt ellenőrzi, hogy a felhasználói bevitel tartalmazza-e a "helló" szót (a kis- és nagybetűk megkülönböztetése nélkül). | igaz |
Előre meghatározott minták
Képlet | Ismertetés | Eredmény |
---|---|---|
IsMatch( "123-45-7890", Digit & Digit & Digit & Hyphen & Digit & Digit & Hyphen & Digit & Digit & Digit & Digit ) |
Egyesült államokbeli társadalombiztosítási számokra illeszkedik | igaz |
IsMatch( "joan@contoso.com", Email ) |
E-mail-címekre illeszkedik | igaz |
IsMatch( "123.456", MultipleDigits & Period & OptionalDigits ) |
Számjegyek olyan sorozataira illeszkedik, melyet egy pont, majd nulla vagy több számjegy követ. | igaz |
IsMatch( "123", MultipleDigits & Period & OptionalDigits ) |
Számjegyek olyan sorozataira illeszkedik, melyet egy pont, majd nulla vagy több számjegy követ. A szövegben nem szerepel egyeztetendő szöveg, így ez a minta nem egyezik. | téves |
Reguláris kifejezések
Képlet | Ismertetés | Eredmény |
---|---|---|
IsMatch( "986", "\d+" ) |
Nullánál nagyobb egész számokra illeszkedik. | igaz |
IsMatch( "1.02", "\d+(\.\d\d)?" ) |
Pozitív pénznemösszegekre illeszkedik. Ha a bemenetben szerepel tizedespont, akkor a tizedespont után legalább két számjegyet is tartalmaznia kell. A 3.00 például érvényes, a 3.1 viszont nem. | igaz |
IsMatch( "-4.95", "(-)?\d+(\.\d\d)?" ) |
Pozitív vagy negatív pénznemösszegekre illeszkedik. Ha a bemenetben szerepel tizedespont, akkor a tizedespont után legalább két számjegyet is tartalmaznia kell. | igaz |
IsMatch( "111-11-1111", "\d{3}-\d{2}-\d{4}" ) |
Egyesült államokbeli társadalombiztosítási számokra illeszkedik. Ellenőrzi a megadott beviteli mező formátumát, típusát és hosszát. Az egyeztetni kívánt sztringnek három számjegyből, egy ezeket követő kötőjelből, majd kettő számjegyből és egy ezeket követő kötőjelből, majd négy számjegyből kell állnia. | igaz |
IsMatch( "111-111-111", "\d{3}-\d{2}-\d{4}" ) |
Megegyezik az előző példával azt leszámítva, hogy az egyik kötőjel elhelyezkedése nem megfelelő a bemenetben. | téves |
IsMatch( "AStrongPasswordNot", "(?!^[0-9]\*$)(?!^[a-zA-Z]\*$)([a-zA-Z0-9]{8,10})" ) |
Érvényesít egy erős jelszót, melynek nyolc, kilenc vagy 10 karakterből kell állnia, valamint legalább egy számot és egy betűt kell tartalmaznia. A sztring nem tartalmazhat különleges karaktereket. | téves |
Match és MatchAll példák
Képlet | Ismertetés | Eredmény |
---|---|---|
Match( "Bob Jones <bob.jones@contoso.com>", "<(?<email>" & Match.Email & ")>" |
Csak a kapcsolattartói adatok e-mail részét nyeri ki. | { email: "bob.jones@contoso.com", FullMatch: "<bob.jones@contoso.com>", SubMatches: [ "bob.jones@contoso.com" ], StartMatch: 11 } |
Match( "Bob Jones <InvalidEmailAddress>", "<(?<email>" & Match.Email & ")>" |
Csak a kapcsolattartói adatok e-mail részét nyeri ki. A rendszer nem találja a vállalati címet (nincs @ jel), így a függvény blank értéket ad vissza. | üres |
Match( Language(), "(<language>\w{2})(?:-(?<script>\w{4}))?(?:-(?<region>\w{2}))?" ) |
Kinyeri s szöveg, szkript és régió részeket a nyelvi címkéből, amit a Language függvény visszaküld. Ezek az eredmények az Egyesült Államokat tükrözik; További példák a Language függvény dokumentációjában találhatók. A (?: karaktereket csoportosít anélkül, hogy alegyezést hoznak létre. | { 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)?" ) |
Egy ISO 8601 időtartamértékből kinyeri az órát, a percet és a másodpercet. A kinyert számok továbbra is szöveges karakterláncban vannak; az Value függvénnyel átalakíthatja számmá, mielőtt matematikai műveleteket hajt végre rajta. | { hours: "2", minutes: "1", seconds: "39", FullMatch: "PT2H1M39S", SubMatches:["2","1","39"], StartMatch: 1 } |
Nézzünk bele az utolsó példába. Ha a karakterláncot dátum-/időértékre szeretné átalakítani az Time függvénnyel, akkor a névvel ellátott alegyezéseket egyesével kell átadnia. Ehhez használható a With függvény, ami azona rekordon végez műveletet, amit a Match visszaküld:
With(
Match( "PT2H1M39S", "PT(?:(?<hours>\d+)H)?(?:(?<minutes>\d+)M)?(?:(?<seconds>\d+)S)?" ),
Time( Value( hours ), Value( minutes ), Value( seconds ) )
)
Ezeknél a példáknál adjon hozzá egy Gomb vezérlőt, állítsa be az OnSelect tulajdonságot ehhez a képlethez, majd jelölje ki a gombot:
Set( pangram, "The quick brown fox jumps over the lazy dog." )
Képlet | Ismertetés | Eredmény |
---|---|---|
Match( pangram, "THE", IgnoreCase ) |
A "THE" egyezés keresés olyan karakterláncokban, amelyeket a pangram változó tartalmaz. A karakterlánc két találatot tartalmaz, de csak az első jelenik meg, mert a Match és nem a MatchAll függvényt használja. Az SubMatches oszlop üres, mert nem definiáltak alegyezéseket. | { FullMatch: "The", SubMatches: [ ], StartMatch: 32 } |
MatchAll( pangram, "the" ) |
A "the" egyezés keresés olyan karakterláncokban, amelyeket a pangram változó tartalmaz. A teszt kis-és nagybetűérzékeny, így csak a "the" második példányát találja meg. Az SubMatches oszlop üres, mert nem definiáltak alegyezéseket. |
![]() |
MatchAll( pangram, "the", IgnoreCase ) |
A "the" egyezés keresés olyan karakterláncokban, amelyeket a pangram változó tartalmaz. Ebben az esetben a teszt nem kis-és nagybetűérzékeny, így a szó mindkét példányát megtalálja. Az SubMatches oszlop üres, mert nem definiáltak alegyezéseket. |
![]() |
MatchAll( pangram, "\b\wo\w\b" ) |
Hárombetűs szavakat talál meg, amelyek középső betűje „o”. Figyelje meg, hogy a „brown” ki lett hagyva, mert nem egy hárombetűs szó, ezért nem felel meg a "\b" (boundary) operátornak. |
![]() |
Match( pangram, "\b\wo\w\b\s\*(?<between>\w.+\w)\s\*\b\wo\w\b" ) |
A „fox” és a „dog” közötti összes karaktert egyezteti. | { between: "jumps over the lazy", FullMatch: "fox jumps over the lazy dog", SubMatches: [ "jumps over the lazy" ], StartMatch: 17 } |
A Galéria MatchAll eredményeinek megtekintése:
Szúrjon be egy üres, függőleges Katalógus vezérlőt egy üres képernyőre.
Állítsa be a Katalógus Elemek tulajdonságát MatchAll( pangram, "\w+" ) vagy MatchAll( pangram, MultipleLetters ) értékre.
A Katalógus sablonjának kiválasztásához válassza az „Elem hozzáadása a Beszúrás lapról” elemet a Katalógusvezérlő közepén.
Adjon hozzá egy Címke vezérlőelemet a katalógussablonhoz.
Állítsa a címke Szöveg tulajdonságát a következő kifejezésre: ThisItem.FullMatch.
A Katalógus a példában szereplő szöveg minden szavával ki van töltve. Hogy az összes szót láthassa a képernyőn méretezze át a katalógus sablonját és a címkevezérlőt.