avatar of 发明者量化-小小梦 发明者量化-小小梦
Seguir Mensajes Privados
4
Seguir
1271
Seguidores

Aprenda expresiones regulares sistemáticamente (I): Los conceptos básicos

Creado el: 2017-03-29 10:52:47, Actualizado el: 2020-11-18 12:39:53
comments   2
hits   3010

Aprenda expresiones regulares sistemáticamente (I): Los conceptos básicos

¿Qué son las expresiones regulares? Una expresión regular es un conjunto de caracteres específicos que se definen de antemano, y una combinación de estos caracteres específicos, que forman un conjunto de cadenas de reglas de cuerdas, para expresar una lógica de filtración de la cadena.

  • Las expresiones regulares pueden tener los siguientes objetivos:
  给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);
  可以通过正则表达式,从字符串中获取我们想要的特定部分。

Para facilitar el aprendizaje, recomendamos Regextor, un software de verificación de expresiones regulares, que se puede ver en mi artículo, donde también se recomienda un buen software para Mac.

Aprenda expresiones regulares sistemáticamente (I): Los conceptos básicos

A continuación se explican las reglas de las expresiones regulares:

  • #### Para hacer coincidir caracteres de texto normal

Las expresiones regulares pueden contener sólo texto ordinario, representado por un ajuste exacto de este texto. Por ejemplo:

La expresión oficial es:song El texto está disponible en inglés. Resultados de la búsqueda: xiaosongge,xiaoSongge Las expresiones regulares son mayúsculas de forma predeterminada, por lo que song no coincide con “Song”. Sin embargo, la mayoría de las implementaciones de expresiones regulares ofrecen una opción para que no se distinga la minúsculas.

  

  

  • #### Cumplir con cualquier caracter

. Se usa para hacer coincidir un carácter arbitrario, por ejemplo:

Expresión regular: c.t El texto está en línea con: cat cet caaat dog Resultados después de la comparación:cat cet caaat dog Análisis: c.t coincide con una cadena que comienza con “c” y termina con “t”, con caracteres arbitrarios en el medio.

Asimismo, se puede combinar una serie de caracteres arbitrarios:

Expresiones regulares: c..t Texto en espera de coincidencia: cat cet caat dog Resultado de la búsqueda: cat cet caat dog

  

  

  • #### Crónicas especiales

. contiene un significado especial en una expresión regular, es un carácter especial. .\ es también un carácter especial que puede ser traducido a un carácter especial. Si quieres que coincida con un verdadero carácter “ . ” , es necesario..El símbolo . que representa el verdadero .

Expresión regular: c.t Texto en espera de coincidencia: cat c.t dog Resultados después de la correspondencia: catc.t dog Nota: Como \ también es un carácter especial, para que coincida con un verdadero \, se necesitan dos líneas diagonales.\:

Expresión regular: c\t Texto en espera de coincidencia: cat c\t dog Resultados después de la correspondencia: catc\t dog

  

  

  • #### Conjunto de caracteres

Y lo mismo que antes. Pero si quisiera hacer una combinación de caracteres específicos, ¿qué haría?[Y [el carácter inicial ].

Expresión regular: c[ab]t Texto en espera de coincidencia: cat cbt cet Resultados después de la comparación:cat cbt cet El análisis:[ab] coincide con “a” o “b”. Así que c[ab]t coincide con “cat” y “cbt” pero no con “cet” 。

  

  

  • #### El uso de espacios de grupos de caracteres

En el ejemplo de arriba, si quisiera hacer un ajuste de cet, en[¿Hay más de uno? Entonces si yo quiero que coincida con una pequeña letra arbitraria, ¿es posible que escriba una docena de ellos?[a-z]:

Expresión regular: c[a-z]t Texto en espera de coincidencia: cat cbt czt c2t Resultados después de la comparación:cat cbt czt c2t Análisis: c[a-z]t representa una letra cualquiera de las letras “a” - “z” que comienza con “c” y termina con “t”.

También hay espacios similares:

[0-9] y[0123456789] tiene la misma función. Coincide con todos los números. [A-F] corresponde a las letras mayúsculas de A a F。 [A-Z] corresponde a todas las letras mayúsculas de A a Z. [a-z] corresponde a todos los caracteres en minúscula de a a z. [A-z] corresponde a todos los caracteres de ASCII A a ASCII z, no sólo a todos los caracteres, sino también a los caracteres de A a z en la tabla ASCII, como[Y así sucesivamente). [[A-Za-z0-9] Concuerda con todas las letras y números de las letras y números de las pequeñas letras.

  

  

  • #### Comparación de no conjuntos de caracteres

Los conjuntos de caracteres se usan generalmente para especificar un grupo de caracteres que necesitan coincidir. Sin embargo, a veces, se quiere excluir un grupo de caracteres que no se quiere que coincida. Esto se puede lograr negando el conjunto de caracteres. Por ejemplo:

Expresión regular: c[^a-z]t Texto en espera de coincidencia: cat cbt czt c2t cAt Resultados después de la correspondencia: cat cbt czt c2t cAt Análisis: Este es el contrario del ejemplo anterior.[[a-z] coincide con todas las letras minúsculas, mientras que [^a-z] Compare con todos los caracteres que no son minúsculos.

Nota: el carácter ^ descompone todos los caracteres del conjunto de caracteres.

  

  

  • #### Los primeros caracteres

Los caracteres meta tienen un significado especial en las expresiones regulares, y ya hemos hablado de algunos caracteres meta, como por ejemplo.[Y] estos caracteres no pueden expresar directamente su propio significado, por ejemplo, no pueden ser usados directamente[Es una coincidencia.[“Uso. para hacer coincidir”.

Todos los caracteres meta pueden ser precedidos por una traducción en sentido inverso, y cuando se traducen, los caracteres se corresponden a sí mismos en lugar de su significado especial. Por ejemplo,[“Esto es un juego de palabras.[ “:

Expresión regular: a[b Texto a la espera de una correspondencia: a[b ab a[[b Resultados después de la comparación:a[b ab a[[b Nota: \ se usa como un carácter meta, lo que también significa que \ es un carácter meta. Por lo tanto, si se necesita una coincidencia con el verdadero “\”, se puede usar\:

Expresión regular: a\b Texto a la espera de una correspondencia: a\b a\b a[[b Resultados después de la correspondencia: a\b a\b a[[b

  

  

  • #### Caracteres en blanco

A veces es posible que necesite coincidir con caracteres en blanco que no se pueden imprimir en el texto. Por ejemplo, si desea encontrar todos los caracteres de Tab, o todos los caracteres de cambio de línea, puede usar los caracteres meta especiales de la siguiente tabla:

Aprenda expresiones regulares sistemáticamente (I): Los conceptos básicos

Por ejemplo, \r\n coincidirá con una combinación de cambio de ruta de vuelta, representando un cambio de ruta de archivo en Windows. En Linux y Unix, solo se necesita usar \n.

  

  

  • #### Para que coincida con un tipo específico de caracteres

Hay algunos caracteres meta especiales que se pueden usar para hacer coincidir conjuntos de caracteres comunes. Estos caracteres meta se llaman clases de caracteres de coincidencia. Encontrarás muy conveniente usarlos.

Números coincidentes o no ¿Qué es lo que está sucediendo?[0-9] puede coincidir con todos los números. Si no desea coincidir con ningún número, puede usar[La siguiente tabla contiene una lista de los caracteres de las categorías numéricas y no numéricas:

Aprenda expresiones regulares sistemáticamente (I): Los conceptos básicos

Expresiones regulares: c\dt Texto en espera de coincidencia: cat c2t czt c9t Resultados después de la correspondencia: catc2t czt c9t

Expresión regular: c\Dt Texto en espera de coincidencia: cat c2t czt c9t Resultados después de la comparación:cat c2t czt c9t Combinación de caracteres alfabéticos y no alfabéticos Otros meta caracteres de clase comunes son \w y \W:

Aprenda expresiones regulares sistemáticamente (I): Los conceptos básicos

Expresión regular: c\wt Texto en espera de coincidencia: cat c2t czt c-t c\t Resultados después de la comparación:cat c2t c-t c\t

Expresiones regulares: c\Wt Texto en espera de coincidencia: cat c2t c-t c\t Resultados después de la correspondencia: cat c2tc-t c\t Combinación de espacios en blanco y no en blanco La última clase de coincidencia que encontramos es una clase en blanco:

Aprenda expresiones regulares sistemáticamente (I): Los conceptos básicos

Expresiones regulares: c\st Texto en espera de coincidencia: cat c t c2t c\t Resultados después de la correspondencia: catc t c2t c\t

Expresiones regulares: c\St Texto en espera de coincidencia: cat c t c2t c\t Resultados después de la comparación:cat c t c2t c\t

  

  

  • #### Cumplir con uno o más caracteres

El signo + significa que coincide con uno o más caracteres. Por ejemplo, a coincide con “a”, y a+ con uno o más “a”.

Expresión oficial: cat Texto en espera de coincidencia: ct cat caat caaat Resultados después de la correspondencia: ctcat caat caaat

Expresión regular: ca + t Texto en espera de coincidencia: ct cat caat caaat Resultados después de la correspondencia: ctcat caat caaat Cuando se usa + en un conjunto de caracteres, el símbolo + debe estar fuera del conjunto:

Expresión regular: c[0-9]+t Texto en espera de coincidencia: ct c0t cat c123t Resultados después de la correspondencia: ctc0t cat c123t Análisis: c[0-9]+t representa una cadena de caracteres que comienza con “c” y termina con “t”, con uno o más dígitos en el medio.

Por supuesto que sí.[0-9+] también es una expresión regular legal, pero representa un conjunto de caracteres que contiene los símbolos “0” - “9” y “+”.

En general, los caracteres metales como . y + se usan como significados literales cuando se usan en conjuntos de caracteres, por lo que no es necesario traducirlos.[0-9+] y[0-9+La función es la misma.

Nota: + es un carácter meta y se requiere la traducción para que coincida con “+”+。

  

  

  • #### Cero caracteres o más

Si quieres que coincida con cero caracteres o más, puedes usar*El carácter inicial .

Expresión regular: ca*t Texto en espera de coincidencia: ct cat caat cbt Resultados después de la comparación:ct cat caat cbt Aviso:*El símbolo es un carácter meta. Para poder coincidir con “ * “, se necesita una traducción.*。

  

  

  • #### Cero o un solo carácter

? corresponde a un cero o a un carácter. Por lo tanto, ? es muy adecuado para coincidir con un carácter opcional en el texto.

Expresiones regulares: ca?t Texto en espera de coincidencia: ct cat caat cbt Resultados después de la comparación:ct cat caat cbt Nota: El símbolo ? es un carácter inicial. Para poder coincidir con el ?, se necesita una traducción.?。

  

  

  • #### Utiliza el número de coincidencias

Las expresiones regulares permiten especificar el número de veces que se puede hacer una coincidencia. El número de veces se puede especificar entre { y } . Nota: { y } también son caracteres de la letra, y se necesitan traducciones cuando se usa el significado literal.

El número exacto de coincidencias Para especificar el número de veces que se debe hacer una correspondencia, puede introducir un número entre { y }. Por ejemplo, { 3 } se corresponde con los caracteres o conjuntos que aparecen 3 veces antes:

Expresión regular: ca{3}t El texto está en espera de una correspondencia: ct cat caaat cbt Resultado de la búsqueda: ct catcaaat cbt Menos de una coincidencia También podemos especificar solo los valores mínimos que coinciden. Por ejemplo, {2,} significa coincidir 2 o más veces:

Expresión regular: ca {1,} t El texto está en espera de una correspondencia: ct cat caaat cbt Resultados después de la correspondencia: ctcat caaat cbt Combinación entre dimensiones También podemos usar valores mínimos y máximos para determinar el número de coincidencias. Por ejemplo, {2,3} significa un mínimo de 2 coincidencias y un máximo de 3 coincidencias.

Expresión regular: ca {2,3}t El texto está en espera de una correspondencia: ct cat caaat cbt Resultado de la búsqueda: ct catcaaat cbt Entonces, ¿qué es lo mismo que [0, 1] y que [1, 1]?

  

  

  • #### Matching sin codicia

Un ejemplo de esto es el siguiente:

Expresión regular: s.*g Sin embargo, la mayoría de los usuarios de la red social no están familiarizados con el tema. Resultados de las partidas: xiao song xiao song Análisis: s.*En lugar de hacer coincidir dos “canciones” como se esperaba, g ha hecho coincidir todo el texto entre la primera “s” y la última “g”.

Esto es porque*Y + es un ajuste avaro. Es decir, las expresiones regulares siempre buscan el mayor ajuste, no el menor, que es intencionado.

Pero si no quieres una coincidencia codiciosa, usa la coincidencia no codiciosa de estas palabras cuantitativas (combina el menor número de caracteres posible). ¿La coincidencia no codiciosa se agrega después de la palabra cuantitativa?:

Aprenda expresiones regulares sistemáticamente (I): Los conceptos básicos

*¿Cómo es eso?*La versión no codiciada, por lo que se puede utilizar*Para modificar el ejemplo anterior:

Expresión regular: s.?g Sin embargo, la mayoría de los usuarios de la red social no están familiarizados con el tema. Resultados de la búsqueda: xiaosong xiao song Análisis: Se puede ver un s.?g coincidió con dos canciones.

  

  

  • #### Define el límite de la cadena

Los caracteres meta que comparan los bordes de la cadena son ^ y $, para el comienzo y el final de la cadena respectivamente.

↑ El uso es el siguiente:

Expresiones regulares: ^ xiao

El texto está disponible en inglés. Resultados después de la comparación:xiaosong

El texto está disponible en inglés. Resultados de la búsqueda: axiaosong Análisis: ^xiao coincide con las cadenas que comienzan con “xiao”.

$ se usa de la siguiente manera:

La expresión oficial es song$.

El texto está disponible en inglés. Resultados de la búsqueda: xiaosong

El texto está disponible en español. Resultados de la búsqueda:xiaosonga Análisis: song$ coincide con las cadenas que terminan en “song”.

Utilización compartida:

La expresión regular es: ^[0-9a-zA-Z]{4,}$

Texto en espera de una correspondencia: a1b234ABC Resultados después de la comparación:a1b234ABC

Texto en espera de coincidencia: + a1b23 = 4ABC Resultado después de la correspondencia: + a1b23=4ABC Análisis:[0-9a-zA-Z]{4,}$ corresponde a una cadena de números o letras cuyo dígito sea mayor que o igual a cuatro dígitos

Nota: ^ si está en el comienzo de la colección, significa negativo; si está fuera de la colección, coincide con el comienzo de la cadena.[^0-9] y ^[Diferencias entre 0-9]

  

  

  • #### Utiliza el modo multilinea

Sin embargo, se puede utilizar el modo multilinea: en el modo multilinea, el motor de expresiones regulares utiliza el signo de cambio de línea como separador de la cadena, ^ para coincidir con el comienzo del texto o el comienzo de una línea, y $ para coincidir con el final del texto o el final de una línea.

Modifique el ejemplo anterior:

La expresión regular es: ((?m) ^[0-9a-zA-Z]{4,}$

Texto en espera de una correspondencia: a1b234ABC +a1b23=4ABC ABC123456

Resultados después de la comparación:a1b234ABC +a1b23=4ABC ABC123456 El análisis:[0-9a-zA-Z]{4,}$ va a coincidir con una cadena de números o letras en cada línea, y el número de dígitos es mayor que o igual a cuatro dígitos.

Nota: Si se utiliza el modo multilínea, ((?m) debe colocarse al comienzo de la expresión regular。 (?m) no es compatible en la mayoría de las implementaciones de expresiones regulares. Algunas implementaciones de expresiones regulares también admiten el uso de \A para el inicio de la cadena de coincidencia, \Z para el final de la cadena de coincidencia. Si es compatible, entonces estos caracteres meta tienen la misma función que ^, $. Sin embargo, estos caracteres meta no pueden usar la modificación ((?m) y por lo tanto no se pueden usar en el modo multilineales.

Este primer artículo explica las bases, y luego veremos el siguiente artículo sobre el aprendizaje sistemático de las expresiones regulares ((ii): el artículo progresista 。

Sin embargo, la mayoría de los usuarios de la plataforma no están familiarizados con la tecnología.