Compartir por


IsMatch Match, e MatchAll funcións

Aplícase a: Aplicacións de lenzo Copilot Studio Aplicacións baseadas en modelos Power Platform CLI Funcións de Dataverse Power Pages

Proba unha coincidencia ou extrae partes dunha cadea de texto baseándose nun patrón.

Descripción

A IsMatch función proba se unha cadea de texto coincide cun patrón que pode incluír caracteres ordinarios, patróns predefinidos ou unha expresión regular. As Match funcións e MatchAll devolven o que se coincidiu, incluíndo as subcoincidencias.

Utilízase IsMatch para validar o que un usuario escribiu nun control de entrada de texto . Por exemplo, confirme se o usuario introduciu un enderezo de correo electrónico válido antes de que o resultado se garde na súa fonte de datos. Se a entrada non se axusta aos teus criterios, engade outros controis que soliciten ao usuario que corrixa a entrada.

Utilízase Match para extraer a primeira cadea de texto que coincida cun patrón e MatchAll para extraer todas as cadeas de texto que coincidan. Extraer subcoincidencias para analizar cadeas complexas.

Match Devolve un rexistro de información para a primeira coincidencia atopada e MatchAll devolve unha táboa de rexistros para cada coincidencia atopada. O rexistro ou rexistros conteñen:

Column Tipo Descripción
subpartidas ou subpartidas denominadas Mensaxe de texto Cada subcoincidencia ten a súa propia columna. Crear un submatch con nome usando (?<Nome>... ) na expresión regular. Se unha subcoincidencia nomeada ten o mesmo nome que unha das columnas predefinidas, a subcoincidencia ten prioridade e xérase un aviso. Cambia o nome da subcoincidencia para evitar este aviso.
Partido Completo Mensaxe de texto Toda a cadea de texto coincide.
Iniciar partida Número A posición inicial da coincidencia dentro da cadea de texto de entrada. O primeiro carácter da cadea devolve 1.
SubMatches, só se se usa MatchOptions.NumberedSubMatches . Táboa de texto dunha única columna (columna Valor) Táboa de subcoincidencias numeradas na orde en que aparecen na expresión regular. Xeralmente, os subencontros nomeados son máis fáciles de traballar e son alentados. Use a función ForAll ou a función Index para traballar cunha subcoincidencia individual. Se non se definen subcoincidencias na expresión regular, esta táboa estará presente pero baleira.

Estas funcións son compatibles con MatchOptions. Por defecto:

  • Estas funcións realizan unha coincidencia que diferencia entre maiúsculas e minúsculas. Use MatchOptions.IgnoreCase para realizar coincidencias que non distinguen entre maiúsculas e minúsculas.
  • IsMatchcoincide con toda a cadea de texto (Complete MatchOption), mentres MatchAll que Match busca unha coincidencia en calquera lugar da cadea de texto (Contén MatchOption). Use Complete, Contains, BeginsWith ou EndsWith segundo corresponda para o seu escenario.

IsMatch Devolve true se a cadea de texto coincide co patrón ou false se non o fai. Match Devolve blank se non se atopa ningunha coincidencia que se poida probar coa función IsBlank . MatchAll Devolve unha táboa baleira se non se atopa ningunha coincidencia que poida ser probada coa función IsEmpty .

Se usas MatchAll para dividir unha cadea de texto, considere usar a función Dividir , que é máis sinxela e rápida.

Tramas

A clave para empregar estas funcións está na descrición do padrón que corresponde. Vostede describe o padrón nunha cadea de texto como unha combinación de:

  • Caracteres comúns, como "abc" ou "123".
  • Padróns predefinidos, como Letter, MultipleDigits ou Email. (O Match enum define estes patróns.)
  • Códigos de expresión regular, como "\d+\s+\d+" ou "[az]+".

Combina estes elementos usando o operador de concatenación de cadeas &. Por exemplo, "abc" & Dixito & "\s+" é un patrón válido que coincide cos caracteres "a", "b" e "c", seguidos dun díxitos de 0 a 9, seguidos de polo menos un espazo en branco.

Caracteres comúns

O patrón máis sinxelo é unha secuencia de caracteres comúns que coinciden exactamente.

Por exemplo, cando se usa coa IsMatch función, a cadea "Hello" coincide exactamente co patrón "Hello". Nin máis nin menos. A cadea "hello!" non coincide co patrón debido ao punto de exclamación no final e porque o caso é incorrecto para a letra "h". (Vexa Match as opcións para modificar este comportamento.)

Na linguaxe de patróns, os caracteres . ? * + ( ) [ ] ^ $ | \ están reservados para fins especiais. Para usar estes caracteres, prefixe o carácter cunha \ barra inversa para indicar que o carácter debe ser tomado literalmente, ou use un dos patróns predefinidos. Por exemplo, podes coincidir coa cadea "Hello?" usando o patrón "Hello\\?" cunha barra inversa antes do signo de interrogación.

Padróns predefinidos

Os padróns predefinidos proporcionan unha forma sinxela de combinar un ou un conxunto de caracteres ou unha secuencia de varios caracteres. Use o operador de concatenación de cadeas & para combinar as súas propias cadeas de texto cos membros da Match enumeración:

Match enumeración Descripción Expresión regular
Calquera Busca coincidencias con calquera carácter. .
coma Coincide cunha coma ,. ,
Díxito Busca coincidencias cun único díxito ("0" a "9"). \d
Correo electrónico Busca coincidencias cun enderezo de correo electrónico que contén un símbolo de "arroba" ("@") e un nome de dominio que contén un punto (".") Ver nota
Guión Busca coincidencias cun guión. - Ver nota
LeftParen Coincide cunha paréntese esquerda (. \(
Carta Busca coincidencias cunha letra. \p{L}
Múltiples díxitos Busca coincidencias cun ou máis díxitos. \d+
Varias letras Busca coincidencias cunha ou máis letras. \p{L}+
MultipleNonSpaces Busca coincidencias cun ou máis caracteres que non engaden espazo en branco (non espazo, separador ou liña nova). \S+
Espazos Múltiples Busca coincidencias cun ou máis caracteres que engaden espazo en branco (espazo, separador ou liña nova). \s+
Non Espazo Busca coincidencias cun único carácter que non engade espazo en branco. \S
Díxitos opcionales Busca coincidencias con cero, un ou máis díxitos. \d*
Letras opcionales Busca coincidencias con cero, unha ou máis letras. \p{L}*
Opcional NonSpaces Busca coincidencias con cero, un ou máis caracteres que non engaden espazo en branco. \S*
Espazos Opcionais Busca coincidencias con cero, un ou máis caracteres que engaden espazo en branco. \s*
Período Coincide cun punto ou punto .. \.
RightParen Coincide cunha paréntese dereita ). \)
Espazo Busca coincidencias cun carácter que engade espazo en branco. \s
Tab Coincide cun carácter de tabulación. \t

Por exemplo, o patrón "A" e MultipleDigits coincide coa letra "A" seguida dun ou máis díxitos.

Power Apps usa unha definición diferente para Match. Emerxir e Match. Trazo. Avalia Text( Match.Email ) para ver a expresión regular empregada polo teu anfitrión.

Expresións regulares

O patrón que usan estas funcións chámase expresión regular. O dialecto específico de expresións regulares de Power Fx está detallado en Expresións regulares en Power Fx.

As expresións regulares son poderosas e serven para unha ampla variedade de propósitos. Tamén poden parecer unha secuencia aleatoria de signos de puntuación. Este artigo non describe todos os aspectos das expresións regulares, pero hai moita información, titoriais e ferramentas dispoñibles en liña.

As expresións regulares teñen unha longa historia e están dispoñibles en moitas linguaxes de programación. Cada linguaxe de programación ten o seu propio dialecto de expresións regulares e existen poucos estándares. Esforzámonos por garantir que a mesma expresión regular dea o mesmo resultado en todas as implementacións de Power Fx. A compatibilidade non é doada de conseguir xa que Power Fx se executa sobre JavaScript e .NET, que teñen diferenzas significativas. Para acomodar a execución en diferentes plataformas, as expresións regulares de Power Fx limítanse a un subconxunto de funcións que son amplamente soportadas en toda a industria.

Como resultado, algunhas expresións regulares que poden funcionar noutros ambientes poden ser bloqueadas ou requirir un axuste en Power Fx. Os erros de tempo de creación infórmanse cando se atopan funcionalidades non compatibles. Esta é unha das razóns polas que a expresión regular e as opcións deben ser unha constante de tempo de creación e non dinámicas (por exemplo, proporcionadas nunha variable).

Nota

Power Apps usa unha versión anterior das expresións regulares de Power Fx que ten menos limitacións pero tamén menos funcionalidades. MatchOptions.DotAll e MatchOptions.FreeSpacing non están dispoñibles e as definicións de Match. Correo electrónico e Match. Os hifens son diferentes. Os pares de substitutos Unicode non se tratan como un só carácter. MatchOptions.NumberedSubMatches é o valor predeterminado. A versión das expresións regulares descritas aquí estará dispoñible en breve en Power Apps, baixo un interruptor "Compatibilidade con Power Fx V1.0".

Aquí tes algúns elementos básicos das expresións regulares que constrúen complexidade na análise dun número.

Funcionalidade Exemplo Descripción
Clase de caracteres predefinidos \d Esta expresión regular coincide cun único número, como 1. Unha clase de caracteres coincide cun conxunto de caracteres e \d coincide cos díxitos estándar e tamén cos díxitos definidos 09 na categoría de caracteres Unicode "Nd". Hai clases de caracteres para letras e números con \w e espazos, incluíndo novas liñas con \s. Tamén hai clases de caracteres inversas que están en maiúsculas: \D coincide con todo o que \d non o fai.
Un ou máis \d+ Esta expresión regular coincide cun ou máis números, como 123. A + despois dun elemento di "un ou máis" do último elemento.
Cero ou un \+?\d Esta expresión regular coincide cun signo opcional + seguido dun ou máis números, así como +123123. A ? despois dun elemento di "isto é opcional, pode ocorrer cero ou unha vez". O + ten unha barra inversa para distinguilo como un carácter literal en lugar do uso de "un ou máis".
Agrupación e alternancia (-|\+)?\d+ Esta expresión regular coincide cun + signo ou un -, opcionalmente, e logo cunha serie de números, como -123, +123, e 123. Aquí introducimos dous conceptos que a miúdo se usan xuntos. En primeiro lugar, temos a paréntese que agrupa como un conxunto de elementos xuntos, para que actúen ? . En segundo lugar, temos | o que di "ou isto ou aquilo".
Clase de caracteres personalizada (-|\+)?\d+[eE][\-\+]?\d+ Esta expresión regular engade un expoñente á mestura con dúas clases de caracteres, coincidindo +123e-12con . Unha clase de personaxes é como | unha alternancia proporcionando un "coincidir cunha destas cousas" nunha forma máis compacta. Do mesmo xeito que o +, - ten un significado especial nas clases de caracteres de expresión regular, polo que debemos escapar del.
Cero ou máis (-|\+)?\d+\.?\d*[eE][\-\+]?\d+ Esta expresión regular engade o decimal despois da porción enteira do número, como -123.456e-89 ou -123.E+32. O \d despois do punto decimal ten un * cuantificador que di "cero ou máis veces" para os díxitos decimais despois do .
Capturar grupos (?&lt;number&gt;(-|\+)?\d+\.?\d*)[eE](?&lt;exponent&gt;[\-\+]?\d+) Finalmente, engadimos grupos de captura para number e exponent. Non só unha expresión regular pode coincidir con toda a cadea, senón que tamén pode extraer porcións para usar nas túas fórmulas, neste caso a parte anterior ( e ou E) e a parte despois.

Estes exemplos só dan un pequeno sabor do que poden facer as expresións regulares. Utilízanse habitualmente para validar números de identificación, enderezos de correo electrónico, números de teléfono, datas e horas, e para extraer información de todo tipo de ficheiros de texto. Continúa a túa viaxe lendo Expresións regulares en Power Fx, experimenta e usa a web para aprender máis.

Match Opcións

Modifique o comportamento destas funcións especificando unha ou máis opcións, que se combinan usando o operador de concatenación de cadeas (&).

Enumeración MatchOptions Descripción Impacto nunha expresión regular
MatchOptions.BeginsWith O padrón debe coincidir desde o comezo do texto. Engade un ^ ao comezo da expresión regular.
MatchOptions.Complete Predeterminado para IsMatch Power Apps. O patrón coincide con toda a cadea de texto, desde o principio ata o final. Engade un ^ ao comezo e un $ ao final da expresión regular.
MatchOptions.Contains Predeterminado para Match e MatchAll, e IsMatch fóra de Power Apps. O padrón debe aparecer nalgún lugar do texto, pero non é preciso que o comece nin finalice. Non modifica a expresión regular.
MatchOptions.DotAll Cambia o comportamento do . operador (punto) para que coincida con todos os caracteres, incluídos os caracteres de nova liña. Non está dispoñible en Power Apps. Non modifica a expresión regular. Esta opción é o equivalente ao modificador estándar "s" para expresións regulares.
MatchOptions.EndsWith O padrón debe coincidir co final da cadea de texto. Engade un $ ao final da expresión regular.
MatchOptions.FreeSpacing Os caracteres de espazo en branco, incluíndo as novas liñas, son ignorados na expresión regular. Os comentarios de final de liña que comezan por a # son ignorados. Non está dispoñible en Power Apps. Só cambia a sintaxe das expresións regulares. Esta opción é o equivalente ao modificador estándar "x" para expresións regulares.
MatchOptions.IgnoreCase Trata as letras maiúsculas e minúsculas como idénticas. Por defecto, as coincidencias distinguen entre maiúsculas e minúsculas. Non modifica a expresión regular. Esta opción é o equivalente ao modificador estándar "i" para as expresións regulares.
Opcións de coincidencia.Multilínea Cambia o comportamento de ^ e $ para que coincida ao final de aliña. Non modifica a expresión regular. Esta opción é o equivalente ao modificador estándar "m" para as expresións regulares.
MatchOptions.NumberedSubMatches As capturas nomeadas son preferibles porque son máis fáciles de entender e manter. O rendemento tamén mellora xa que non se conservan capturas innecesarias. Pero para expresións regulares máis antigas, trata cada conxunto de parénteses como unha captura numerada que se inclúe coa táboa SubMatches no resultado. Predeterminado en Power Apps. Non modifica a expresión regular. As capturas nomeadas están desactivadas e \1 as referencias de estilo están habilitadas.

Usar MatchAll é o mesmo que usar o modificador estándar "g" para expresións regulares.

Sintaxe

IsMatch( Texto, patrón [, Opcións ] )

  • Texto - Obrigatorio. A cadea de texto para probar.
  • Patrón - Obrigatorio. O padrón para probar como cadea de texto. Concatenar patróns predefinidos que o Match enum define ou proporcionar unha expresión regular. O patrón debe ser unha fórmula constante sen variables, fontes de datos ou outras referencias dinámicas que cambien a medida que se executa a aplicación. Teña en conta que a fórmula debe expresarse como "Match. PredefinedPattern" por exemplo. Match Correo electrónico
  • Opcións - Opcional. Unha combinación de cadea de texto dos valores da enumeración MatchOptions. Por defecto, úsase MatchOptions.Complete. As opcións deben ser unha fórmula constante sen variables, fontes de datos ou outras referencias dinámicas que cambien a medida que se executa a aplicación.

Match( Texto, patrón [, Opcións ] )

  • Texto - Obrigatorio. A cadea de texto para buscar coincidencias.
  • Patrón - Obrigatorio. O padrón para buscar coincidencias como cadea de texto. Concatenar patróns predefinidos que o Match enum define, ou proporcionar unha expresión regular. Patrón debe ser unha fórmula constante sen variables, fontes de datos ou outras referencias dinámicas que cambien a medida que se executa a aplicación.
  • Opcións - Opcional. Unha combinación de cadea de texto dos valores da enumeración MatchOptions. Por defecto, úsase MatchOptions.Contains. As opcións deben ser unha fórmula constante sen variables, fontes de datos ou outras referencias dinámicas que cambien a medida que se executa a aplicación.

MatchAll( Texto, patrón [, Opcións ] )

  • Texto - Obrigatorio. A cadea de texto para buscar coincidencias.
  • Patrón - Obrigatorio. O padrón para buscar coincidencias como cadea de texto. Concatenar patróns predefinidos que o Match enum define ou proporcionar unha expresión regular. O patrón debe ser unha fórmula constante sen variables, fontes de datos ou outras referencias dinámicas que cambien a medida que se executa a aplicación.
  • Opcións - Opcional. Unha combinación de cadea de texto dos valores da enumeración MatchOptions. Por defecto, úsase MatchOptions.Contains. As opcións deben ser unha fórmula constante sen variables, fontes de datos ou outras referencias dinámicas que cambien a medida que se executa a aplicación.

IsMatch Exemplos

Caracteres comúns

Imaxina que a túa aplicación ten un control de entrada de texto chamado TextInput1. Os usuarios introducen valores neste control para almacenalos nunha base de datos.

Os usuarios escriben Hello world en TextInput1.

Fórmula Descripción Resultado
IsMatch( TextInput1.Text, "Hello world" ) Comproba se a entrada do usuario coincide exactamente coa cadea "Hello world". verdade
IsMatch( TextInput1.Text, "Good bye" ) Comproba se a entrada do usuario coincide exactamente coa cadea "Good bye". falso
IsMatch( TextInput1.Text, "hello", Contains ) Proba se a entrada do usuario contén a palabra "hello" (diferencia entre minúsculas e minúsculas). falso
IsMatch( TextInput1.Text, "hello", Contains & IgnoreCase ) Comproba se a entrada do usuario contén a palabra "hello" (non diferencia entre minúsculas e minúsculas). verdade

Padróns predefinidos

Fórmula Descripción Resultado
IsMatch( "123-45-7890", Match.Digit & Match.Digit & Match.Digit & Match.Digit & Match.Digit & Match.Digit & Match.Digit & Match.Digit & Match.Digit & Match.Digit & Match.Digit ) Busca coincidencias cun número da Seguridade Social dos Estados Unidos verdade
IsMatch( "joan@contoso.com", Match.Email ) Busca coincidencias cun enderezo de correo electrónico verdade
IsMatch( "123.456", Match.MultipleDigits & Match.Period & Match.OptionalDigits ) Busca coincidencias cunha secuencia de díxitos, un punto e logo cero ou máis díxitos. verdade
IsMatch( "123", Match.MultipleDigits & Match.Period & Match.OptionalDigits ) Busca coincidencias cunha secuencia de díxitos, un punto e logo cero ou máis díxitos. Non aparece un punto no texto que coincida, polo que este padrón non coincide. falso

Expresións regulares

Fórmula Descripción Resultado
IsMatch( "986", "\d+" ) Busca coincidencias cun enteiro maior que cero. verdade
IsMatch( "1.02", "\d+(\.\d\d)?" ) Busca coincidencias cunha cantidade en moeda positiva. Se a entrada contén un punto decimal, a entrada tamén debe conter dous caracteres numéricos despois do punto decimal. Por exemplo, 3.00 é válido, pero 3.1 non. verdade
IsMatch( "-4.95", "(-)?\d+(\.\d\d)?" ) Busca coincidencias cunha cantidade en moeda positiva ou negativa. Se a entrada contén un punto decimal, a entrada tamén debe conter dous caracteres numéricos despois do punto decimal. verdade
IsMatch( "111-11-1111", "\d{3}-\d{2}-\d{4}" ) Busca coincidencias cun número da Seguridade Social dos Estados Unidos. Valida o formato, tipo e lonxitude do campo de entrada subministrado. A cadea para buscar coincidencias debe estar composta por tres caracteres numéricos seguidos dun trazo, logo dous caracteres numéricos seguidos dun trazo e, a continuación, catro caracteres numéricos. verdade
IsMatch( "111-111-111", "\d{3}-\d{2}-\d{4}" ) O mesmo que o exemplo anterior, pero un dos guións está fóra de lugar na entrada. falso
IsMatch( "AStrongPasswordNot", "(?!^[0-9]\*$)(?!^[a-zA-Z]\*$)([a-zA-Z0-9]{8,10})" ) Valida un contrasinal seguro que debe conter oito, nove ou 10 caracteres, polo menos un díxito e polo menos un carácter alfabético. A cadea non pode conter caracteres especiais. falso

MatchExemplos MatchAll

Fórmula Descripción Resultado
Match( "Bob Jones <bob.jones@contoso.com>", "<(?<email>" & Match.Email & ")>") Extrae só a parte do correo electrónico da información de contacto. {
correo electrónico: "bob.jones@contoso.com",
FullMatch: "<bob.jones@contoso.com>",
Inicio do partido: 11
}
Match( "Bob Jones <InvalidEmailAddress>", "<(?<email>" & Match.Email & ")>" Extrae só a parte do correo electrónico da información de contacto. Non se atopa ningunha dirección legal (non hai signo @), polo que a función devolve blank. en branco
Match( Language(), "(<language>\w{2})(?:-(?<script>\w{4}))?(?:-(?<region>\w{2}))?" ) Extrae as porcións de idioma, script e rexión da etiqueta de idioma que a función Language devolve. Estes resultados reflicten os Estados Unidos; vexa a documentación da función Language para obter máis exemplos. O operador (?: agrupa caracteres sen crear outra subcoincidencia. {
language: "en",
script: blank,
rexión: "Estados Unidos",
FullMatch: "en-US",
Inicio do partido: 1
}
Match( "PT2H1M39S", "PT(?:(?<hours>\d+)H)?(?:(?<minutes>\d+)M)?(?:(?<seconds>\d+)S)?" ) Extrae as horas, minutos e segundos dun valor de duración ISO 8601. Os números extraídos seguen nunha cadea de texto; use a función Value para convertelo nun número antes de que se realicen operacións matemáticas nel. {
horas: "2",
minutos: "1",
segundos: "39",
FullMatch: "PT2H1M39S",
Inicio do partido: 1
}

Analicemos ese último exemplo. Se queres converter esta cadea nun valor de data/hora usando a función Hora , debes pasar as subcoincidencias nomeadas individualmente. Para iso, use a función Con que opera no rexistro que Match devolve:

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

Para estes exemplos, engada un control de Botón, establézao a súa propiedade OnSelect nesta fórmula e logo seleccione o botón:

Set( pangram, "The quick brown fox jumps over the lazy dog." )
Fórmula Descripción Resultado
Match( pangram, "THE", IgnoreCase ) Atopa todas as coincidencias de "THE" na cadea de texto que contén a variable pangram. A cadea contén dúas coincidencias, pero só se devolve a primeira porque está a usar Match e non MatchAll. {
FullMatch: "The",
Inicio do partido: 32
}
MatchAll( pangram, "the" ) Atopa todas as coincidencias de "the" na cadea de texto que contén a variable pangram. A proba diferencia entre maiúsculas e minúsculas, polo que só se atopa a segunda instancia de "the". MatchAll para o pangrama.
MatchAll( pangram, "the", IgnoreCase ) Atopa todas as coincidencias de "the" na cadea de texto que contén a variable pangram. Neste caso, a proba non é sensible a maiúsculas e minúsculas, polo que se atopan ambas as dúas instancias da palabra. MatchAll Con IgnoreCase.
MatchAll( pangram, "\b\wo\w\b" ) Atopa todas as palabras de tres letras cunha "o" no medio. "marrón" está excluído porque non é unha palabra de tres letras e, polo tanto, non coincide con "\b" (límite de palabras). MatchAll para pangramas con b, wo, w e b.
Match( pangram, "\b\wo\w\b\s\*(?<between>\w.+\w)\s\*\b\wo\w\b" ) Buscas as coincidencias con todos os caracteres entre "fox" e "dog". {
entre: "jumps over the lazy",
FullMatch: "O raposo salta sobre o can preguiceiro"
Inicio do partido: 17
}

Para ver os resultados MatchAll nunha galería:

  1. Nunha pantalla baleira, insira un control de galería vertical en branco.

  2. Establece a propiedade Items da galería en MatchAll( pangram, "\w+" ) ouMatchAll( pangram, MultipleLetters ).

    Galería de elementos.

  3. Seleccione "Engadir un elemento da lapela Inserir" no medio do control da galería para seleccionar o modelo da galería.

  4. Engada un control de Etiqueta ao modelo da galería.

  5. Estableza a propiedade Text da etiqueta a ThisItem.FullMatch.

    A galería está chea con cada palabra do noso texto de exemplo. Para ver todas as palabras nunha pantalla, cambia o tamaño do modelo da galería e o control da etiqueta.

    Propiedade Text.