Funcions IsMatch, Match i MatchAll
S'aplica a: Aplicacions
de llenç CLI d'aplicacions
Power Pages
Power Platform basades en models
Prova si hi ha una coincidència o extreu parts d'una cadena de text en funció d'un patró.
Descripció
La funció IsMatch prova si una cadena de text coincideix amb un patró que pot incloure caràcters ordinaris, patrons predefinits o una expressió regular. Les funcions Match i MatchAll tornen els valors que coincideixen, també les subcoincidències.
Utilitzeu IsMatch per validar què ha escrit en un control Entrada de text. Per exemple, podeu confirmar si l'usuari ha introduït una adreça electrònica vàlida abans que el resultat es desi a la vostra font de dades. Si l'entrada no coincideix amb el vostre criteri, afegiu altres controls que demanin a l'usuari que corregeixi l'entrada.
Utilitzeu Match per extreure la primera cadena de text que coincideixi amb un patró i MatchAll per extreure totes les cadenes de text que coincideixin. També podeu extreure subcoincidències per analitzar cadenes complexes.
Match retorna un registre d'informació per a la primera coincidència trobada i MatchAll retorna una taula de registres per a cada coincidència trobada. El registre o registres contenen:
Column | Type | Descripció |
---|---|---|
subcoincidència o subcoincidències amb nom | SMS | Cada subcoincidència amb nom tindrà la seva pròpia columna. Creeu una subcoincidència amb nom mitjançant (?<nom>...) a l'expressió regular. Si una subcoincidència amb nom té el mateix nom que una de les columnes predefinides (a continuació), la subcoincidència té prioritat i es genera un advertiment. Per evitar aquest advertiment, canvieu el nom de la subcoincidència. |
Partit complet | Text | Tota la cadena de text que ha coincidit. |
IniciPartit | Número | Posició inicial de la coincidència dins de la cadena de text d'entrada. El primer caràcter de la cadena torna 1. |
Coincidències secundàries | Taula d'una sola columna de Text (columna Valor) | Taula de subcoincidències amb nom i sense nom en l'ordre en què apareixen a l'expressió regular. En general, és més fàcil treballar amb les subcoincidències amb nom i es recomanen. Utilitzeu la funció ForAll o les funcions Last(FirstN(...)) per treballar amb una subcoincidència individual. Si no s'ha definit cap subcoincidència a l'expressió regular, aquesta taula apareixerà, però estarà buida. |
Aquestes funcions admeten MatchOptions. Per defecte:
- Aquestes funcions realitzen una coincidència que diferencia entre majúscules i minúscules. Utilitzeu MatchOptions.IgnoreCase per fer coincidències que no distingeixen entre majúscules i minúscules.
- IsMatch coincideix amb tota la cadena de text (Complete MatchOption), mentre que Match i MatchAll cerquen una coincidència a qualsevol lloc de la cadena de text (Contains MatchOption). Utilitzeu Completa, Conté, BeginsWith o EndsWith segons calgui per a l'escenari.
IsMatch retorna true si la cadena de text coincideix amb el patró o false si no ho fa. La coincidència retorna en blanc si no es troba cap coincidència que es pugui provar amb la funció IsBlank . MatchAll retorna una taula buida si no es troba cap coincidència que es pugui provar amb la funció IsEmpty .
Si utilitzeu MatchAll per dividir una cadena de text, considereu la possibilitat d'utilitzar la funció Split, que és més senzilla d'utilitzar i més ràpida.
Patrons
La clau per utilitzar aquestes funcions és la descripció del patró que ha de coincidir. Descriviu el patró en una cadena de text com una combinació de:
- Caràcters ordinaris, com ara "abc" o "123".
- Patrons predefinits, com ara Lletra, MultipleDigits o Correu. (Match enum defineix aquests patrons).
- Codis d'expressions regulars, com ara "\d+\s+\d+" o "[a-z]+".
Combina aquests elements utilitzant l'operador de concatenació de cadenes&. Per exemple, "abc" & Dígit & "\s+" és un patró vàlid que coincideix amb els caràcters "a", "b" i "c", seguits d'un dígit de 0 a 9, seguit d'almenys un caràcter d'espai en blanc.
Caràcters ordinaris
El patró més senzill és una seqüència de caràcters ordinaris que ha de coincidir exactament.
Per exemple, quan s'utilitza amb la funció IsMatch, la cadena "Hola" coincideix amb el patró "Hola" de manera exacte. Ni més ni menys. La cadena "hola!" no coincideix amb el patró a causa del signe d'exclamació del final i pel fet que la majúscula no es correspon al de la lletra "h". (Vegeu MatchOptions per obtenir les maneres de modificar aquest comportament).
En el llenguatge de patrons, alguns caràcters es reserven per a propòsits especials. Per utilitzar aquests caràcters, afegiu un prefix al caràcter amb \ (barra inversa) per indicar que el caràcter s'ha de prendre literalment; o bé, utilitzeu un dels patrons predefinits que es descriuen més endavant en aquest tema. En aquesta taula s'enumeren els caràcters especials:
Caràcter especial | Descripció |
---|---|
. | punt |
? | interrogant |
* | asterisc |
+ | suma |
( ) | parèntesis |
[ ] | claudàtors |
{ } | claus |
^ | signe d'intercalació |
$ | signe del dòlar |
| | barra vertical |
\ | barra inclinada inversa |
Per exemple, podeu fer coincidir amb "Hola?" utilitzant el patró "Hola\?" amb una barra inversa abans que l'interrogant.
Patrons predefinits
Els patrons predefinits proporcionen una manera senzilla de fer coincidir un conjunt de caràcters o una seqüència de diversos caràcters. Utilitzeu l'operador de concatenació de cadenes& per combinar les vostres pròpies cadenes de text amb els membres de l'enumeració Match :
Match enum | Descripció | Expressió regular |
---|---|---|
Qualsevol | Coincideix amb qualsevol caràcter. | . |
Coma | Coincideix amb una coma. | , |
Dígit | Coincideix amb un sol dígit (del "0" al "9"). | \d |
Correu electrònic | Coincideix amb una adreça electrònica que conté un símbol "arrova" ("@") i un nom de domini que conté un punt (".") | .+\@.+\\.[^\\.]{2,} |
Guionet | Coincideix amb un guió. | \- |
Paren esquerre | Coincideix amb un parèntesi esquerre "(". | \( |
Lletra | Coincideix amb una lletra. | \p{L} |
Dígits múltiples | Coincideix amb un o més dígits. | \d+ |
Lletres múltiples | Coincideix amb una o més lletres. | \p{L}+ |
MultipleNonSpaces | Coincideix amb un o més caràcters que no afegeixen un espai en blanc (que no siguin espai, tabulador ni salt de línia). | \S+ |
Espais múltiples | Coincideix amb un o més caràcters que afegeixen un espai en blanc (espai, tabulador o salt de línia). | \s+ |
No Espai | Coincideix amb un únic caràcter que no afegeix un espai en blanc. | \S |
Dígits opcionals | Coincideix amb cap, un o més dígits. | \d* |
Cartes opcionals | Coincideix amb cap, una o més lletres. | \p{L}* |
OpcionalNonSpaces | Coincideix amb cap, un o més caràcters que no afegeixen un espai en blanc. | \S* |
Espais opcionals | Coincideix amb cap, un o més caràcters que afegeixen un espai en blanc. | \s* |
Període | Coincideix amb un punt ("."). | \. |
Dreta | Coincideix amb un parèntesi dret ")". | \) |
Espai | Coincideix amb un caràcter que afegeix un espai en blanc. | \s |
Pestanya | Coincideix amb un caràcter de tabulació. | \t |
Per exemple, el patró "A" i MultipleDigits coincidiran amb la lletra "A" seguida d'un o més dígits.
Expressions regulars
El patró que utilitzen aquestes funcions és una expressió regular. Els caràcters ordinaris i els patrons predefinits que s'han descrit anteriorment en aquest tema ajuden a crear expressions regulars.
Les expressions regulars són molt potents, estan disponibles en molts llenguatges de programació i s'utilitzen per a una gran varietat de propòsits. Sovint poden semblar també una seqüència aleatòria de signes de puntuació. En aquest article no es descriuen tots els aspectes de les expressions regulars, però hi ha una gran quantitat d'informació, tutorials i eines disponibles a Internet.
Les expressions regulars venen en diferents dialectes i el Power Apps utilitza una variant del dialecte del JavaScript. Vegeu Sintaxi d'expressions regulars per obtenir una introducció a la sintaxi. S'admeten les subcoincidències amb nom (de vegades s'anomenen grups de captura amb nom):
- Subcoincidències amb nom: (?<nom> ...)
- Referències inverses amb nom: \k<nom>
A la taula Match enum anterior d'aquest tema, cada enum apareix a la mateixa fila que l'expressió regular corresponent.
Opcions de coincidència
Podeu modificar el comportament d'aquestes funcions especificant una o més opcions, que podeu combinar mitjançant l'operador de concatenació de cadena (&).
MatchOptions enum | Descripció | Impacte en una expressió regular |
---|---|---|
MatchOptions.BeginsWith | El patró ha de coincidir des de l'inici del text. | Afegeix un ^ a l'inici de l'expressió regular. |
MatchOptions.Complete | Valor per defecte d'IsMatch. El patró ha de coincidir amb tota la cadena de text, des de l'inici fins al final. | Afegeix un ^ a l'inici i un $ al final de l'expressió regular. |
MatchOptions.Contains | Per defecte per a Match i MatchAll. El patró ha d'aparèixer en algun lloc del text, però no ha de ser a l'inici ni al final. | No modifica l'expressió regular. |
MatchOptions.EndsWith | El patró ha de coincidir amb el final de la cadena de text. | Afegeix un $ al final de l'expressió regular. |
MatchOptions.IgnoreCase | Tracta les lletres majúscules i minúscules com a idèntiques. Per defecte, la coincidència distingeix entre majúscules i minúscules. | No modifica l'expressió regular. Aquesta opció és l'equivalent del modificador estàndard "i" per a les expressions regulars. |
MatchOptions.Multiline | Coincideix amb diverses línies. | No modifica l'expressió regular. Aquesta opció és l'equivalent del modificador estàndard "m" per a les expressions regulars. |
L'ús de MatchAll és l'equivalent de l'ús del modificador estàndard "g" per a les expressions regulars.
Sintaxi
IsMatch(Text,Pattern [, Opcions ] )
- Text : obligatori. La cadena de text que es provarà.
- Patró : obligatori. El patró que voleu provar com a cadena de text. Concateneu patrons predefinits que defineixi Match enum o proporcioneu una expressió regular. El patró ha de ser una fórmula constant sense variables, fonts de dades o altres referències dinàmiques que canviïn a mesura que s'executa l'aplicació.
- Opcions : opcional. Una combinació de cadena de text de valors MatchOptions enum. Per defecte, s'utilitza MatchOptions.Completa.
Coincidència( Text,Patró [, Opcions ] )
- Text : obligatori. La cadena de text que es farà coincidir.
- Patró : obligatori. El patró que voleu fer coincidir com a cadena de text. Concateneu patrons predefinits que defineixi Match enum o proporcioneu una expressió regular. El patró ha de ser una fórmula constant sense variables, fonts de dades o altres referències dinàmiques que canviïn a mesura que s'executa l'aplicació.
- Opcions : opcional. Una combinació de cadena de text de valors MatchOptions enum. Per defecte, s'utilitza MatchOptions.Conté.
MatchAll( Text,Patró [, Opcions ] )
- Text : obligatori. La cadena de text que es farà coincidir.
- Patró : obligatori. El patró que voleu fer coincidir com a cadena de text. Concateneu patrons predefinits que defineixi Match enum o proporcioneu una expressió regular. El patró ha de ser una fórmula constant sense variables, fonts de dades o altres referències dinàmiques que canviïn a mesura que s'executa l'aplicació.
- Opcions : opcional. Una combinació de cadena de text de valors MatchOptions enum. Per defecte, s'utilitza MatchOptions.Conté.
Exemples IsMatch
Caràcters ordinaris
Imagineu que l'aplicació conté un control Entrada de text anomenat TextInput1. L'usuari introdueix els valors en aquest control per emmagatzemar-los en una base de dades.
L'usuari escriu Hola món a TextInput1.
Fórmula | Descripció | Resultat |
---|---|---|
IsMatch( TextInput1.Text, "Hello world" ) |
Prova si l'entrada de l'usuari coincideix exactament amb la cadena "Hola món". | veritable |
IsMatch( TextInput1.Text, "Good bye" ) |
Prova si l'entrada de l'usuari coincideix exactament amb la cadena "Adeu". | fals |
IsMatch( TextInput1.Text, "hello", Contains ) |
Prova si l'entrada de l'usuari conté la paraula "hola" (distingeix entre majúscules i minúscules). | fals |
IsMatch( TextInput1.Text, "hello", Contains & IgnoreCase ) |
Prova si l'entrada de l'usuari conté la paraula "hola" (no distingeix entre majúscules i minúscules). | veritable |
Patrons predefinits
Fórmula | Descripció | Resultat |
---|---|---|
IsMatch( "123-45-7890", Digit & Digit & Digit & Hyphen & Digit & Digit & Hyphen & Digit & Digit & Digit & Digit ) |
Coincideix amb un número de la seguretat social dels Estats Units | veritable |
IsMatch( "joan@contoso.com", Email ) |
Coincideix amb una adreça electrònica | veritable |
IsMatch( "123.456", MultipleDigits & Period & OptionalDigits ) |
Coincideix amb una seqüència de dígits, un punt i, a continuació, zero o més dígits. | veritable |
IsMatch( "123", MultipleDigits & Period & OptionalDigits ) |
Coincideix amb una seqüència de dígits, un punt i, a continuació, zero o més dígits. No es mostra cap punt al text que s'ha de fer coincidir, de manera que aquest patró no té cap coincidència. | fals |
Expressions regulars
Fórmula | Descripció | Resultat |
---|---|---|
IsMatch( "986", "\d+" ) |
Coincideix amb un enter major que zero. | veritable |
IsMatch( "1.02", "\d+(\.\d\d)?" ) |
Coincideix amb un import monetari positiu. Si l'entrada conté un punt decimal, l'entrada també ha de contenir dos caràcters numèrics després del punt decimal. Per exemple, 3.00 és vàlid, però 3.1 no ho és. | veritable |
IsMatch( "-4.95", "(-)?\d+(\.\d\d)?" ) |
Coincideix amb un import monetari positiu o negatiu. Si l'entrada conté un punt decimal, l'entrada també ha de contenir dos caràcters numèrics després del punt decimal. | veritable |
IsMatch( "111-11-1111", "\d{3}-\d{2}-\d{4}" ) |
Coincideix amb un número de la seguretat social dels Estats Units. Valida el format, el tipus i la longitud del camp d'entrada subministrat. La cadena que feu coincidir ha de constar de tres caràcters numèrics seguits d'un guió, dos caràcters numèrics seguits d'un guió i quatre caràcters numèrics. | veritable |
IsMatch( "111-111-111", "\d{3}-\d{2}-\d{4}" ) |
Igual que l'exemple anterior, però un dels guions està fora de lloc a l'entrada. | fals |
IsMatch( "AStrongPasswordNot", "(?!^[0-9]\*$)(?!^[a-zA-Z]\*$)([a-zA-Z0-9]{8,10})" ) |
Valida una contrasenya segura, que ha de contenir vuit, nou o deu caràcters, a més d'un mínim d'un dígit i un caràcter alfabètic. La cadena no ha de contenir caràcters especials. | fals |
Exemples de Match i MatchAll
Fórmula | Descripció | Resultat |
---|---|---|
Match( "Bob Jones <bob.jones@contoso.com>", "<(?<email>" & Match.Email & ")>" |
Extreu només la part del correu de la informació de contacte. | { correu electrònic: "bob.jones@contoso.com", FullMatch: "<bob.jones@contoso.com>", SubMatches: [ "bob.jones@contoso.com" ], StartMatch: 11 } |
Match( "Bob Jones <InvalidEmailAddress>", "<(?<email>" & Match.Email & ")>" |
Extreu només la part del correu de la informació de contacte. No s'ha trobat cap adreça legal (no hi ha cap signe @), de manera que la funció torna blank. | Buit |
Match( Language(), "(<language>\w{2})(?:-(?<script>\w{4}))?(?:-(?<region>\w{2}))?" ) |
Extreu la part de la llengua, l'alfabet i la regió de l'etiqueta de llengua que torna la funció Language. Aquests resultats reflecteixen els Estats Units; consulteu la documentació de la funció Language per obtenir-ne més exemples. L'operador (?: agrupa els caràcters sense crear cap altra subcoincidència. | { 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)?" ) |
Extreu les hores, els minuts i els segons d'un valor de duració de la ISO 8601. Els nombres extrets encara estan en una cadena de text; utilitzeu la funció Value per convertir-la en un número abans de fer-hi operacions matemàtiques. | { hours: "2", minutes: "1", seconds: "39", FullMatch: "PT2H1M39S", SubMatches:["2","1","39"], StartMatch: 1 } |
Desglossem aquest darrer exemple. Si voleu convertir aquesta cadena en un valor de data i hora amb la funció Time, heu de passar les subcoincidències amb nom individualment. Per fer-ho, podeu utilitzar la funció With que opera al registre que torna Match:
With(
Match( "PT2H1M39S", "PT(?:(?<hours>\d+)H)?(?:(?<minutes>\d+)M)?(?:(?<seconds>\d+)S)?" ),
Time( Value( hours ), Value( minutes ), Value( seconds ) )
)
En aquests exemples, afegiu un control Botó, definiu-ne la propietat OnSelect en aquesta fórmula i, a continuació, seleccioneu el botó:
Set( pangram, "The quick brown fox jumps over the lazy dog." )
Fórmula | Descripció | Resultat |
---|---|---|
Match( pangram, "THE", IgnoreCase ) |
Cerqueu totes les coincidències de "THE" a la cadena de text que conté la variable pangram. La cadena conté dues coincidències, però només es torna la primera perquè feu servir Match i no MatchAll. La columna SubMatches és buida perquè no s'ha definit cap subcoincidència. | { FullMatch: "The", SubMatches: [ ], StartMatch: 32 } |
MatchAll( pangram, "the" ) |
Cerqueu totes les coincidències de "the" a la cadena de text que conté la variable pangram. La prova distingeix entre majúscules i minúscules, de manera que només es troba la segona instància de "the". La columna SubMatches és buida perquè no s'ha definit cap subcoincidència. |
![]() |
MatchAll( pangram, "the", IgnoreCase ) |
Cerqueu totes les coincidències de "the" a la cadena de text que conté la variable pangram. En aquest cas, la prova distingeix entre majúscules i minúscules, per la qual cosa es troben totes dues instàncies de la paraula. La columna SubMatches és buida perquè no s'ha definit cap subcoincidència. |
![]() |
MatchAll( pangram, "\b\wo\w\b" ) |
Troba totes les paraules de tres lletres amb un "o" al mig. Fixeu-vos que "brown" s'exclou perquè no és una paraula de tres lletres i, per tant, no coincideix amb "\b" (límit de paraula). |
![]() |
Match( pangram, "\b\wo\w\b\s\*(?<between>\w.+\w)\s\*\b\wo\w\b" ) |
Coincideix amb tots els caràcters entre "fox" i "dog". | { between: "jumps over the lazy", FullMatch: "fox jumps over the lazy dog", SubMatches: [ "jumps over the lazy" ], StartMatch: 17 } |
Per veure els resultats de MatchAll en una galeria:
En una pantalla buida, inseriu un control Galeria vertical en blanc.
Definiu la propietat Items de la galeria a MatchAll(pangram, "\w+") o MatchAll(pangram, MultipleLetters).
Seleccioneu "Afegeix un element de la pestanya Insereix" al mig del control de la galeria per seleccionar la plantilla de la galeria:
Afegiu un control Etiqueta a la plantilla de la galeria.
Definiu la propietat Text de l'etiqueta com a ThisItem.FullMatch.
La galeria s'omple amb cada paraula del nostre text d'exemple. Canvieu la mida de la plantilla de la galeria i el control d'etiqueta per veure totes les paraules en una pantalla.