Aprender expresiones regulares de manera sistemática:

El autor:Un sueño pequeño., Creado: 2017-03-29 10:52:47, Actualizado: 2020-11-18 12:39:53

Aprender expresiones regulares de manera sistemática:

¿Qué es una expresión regular? Una expresión normal es una combinación de ciertos caracteres predefinidos que forman un conjunto de reglas de filtración para expresar una lógica de filtración de la cadena.

  • Los siguientes objetivos se pueden lograr con la expresión regular:

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

    Para que sea más fácil para todos aprender, primero recomiendo un software de verificación de expresiones regulares, Regextor, que puede verse en mi artículo, que también recomienda muchos buenos programas para Mac.

    img

A continuación se comienza a explicar las reglas de las expresiones regulares:

  • Compare con los caracteres de texto ordinario

    Las expresiones normales pueden contener solo texto ordinario, representando una coincidencia exacta; por ejemplo:

    La expresión normal es:songEn espera de correlación: xiao songge, xiao songge Los resultados de las coincidencias: xiaosongGe, xiao Songge. ¿Qué quieres decir con eso? Las expresiones regulares por defecto están escritas en letras pequeñas, por lo que song no coincide con Song. Sin embargo, la mayoría de las implementaciones de expresiones regulares ofrecen una opción para indicar que no se escriben en letras pequeñas.

  • Compare cualquier tipo de caracteres

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

    Expresión regular: c.t En espera de coincidir texto: cat cet caaat dog Los resultados después de la coincidencia:cat cetCaat Dog también. Análisis: c.t se empareja con una cadena de caracteres que comienza con "c" y termina con "t", con un carácter arbitrario en el medio.

    同理,多个连续的.可以匹配多个连续的任意字符:

    La expresión regular: c...t En espera de una correspondencia Los resultados de las coincidencias: cat cetcaatPerro

  • Compare con caracteres especiales

    . contiene un significado especial en las expresiones regulares, es un carácter especial..\ también es un carácter especial, que puede desempeñar un papel de traducción de caracteres especiales.. Si quieres que coincida es un verdadero ".

    Expresión regular: c.t En espera de una correspondencia: cat c.t dog Resultados de las coincidencias: catc.tEl perro Nota: Como \ también es un carácter especial, para que se pueda combinar un verdadero \, se necesitan dos contra-verbales \:

    Expresión regular: c \ t Texto en espera de coincidencia: cat c\t dog Resultados de las coincidencias: catc\tPerro

  • Usar conjuntos de caracteres

    Como se ha dicho anteriormente. Se puede combinar un carácter arbitrario, pero ¿qué pasa si quiero combinar varios caracteres específicos?

    Expresión regular: c[ab]t Texto en espera de coincidencia: Los resultados después de la coincidencia:cat cbtEso es todo. Análisis: [ab] se corresponde con "a o b . Así que c[ab]t se corresponde con cat y cbt , pero no con cet".

  • Usar espacios de grupos de caracteres

    En el ejemplo anterior, ¿qué pasa si quiero combinar cet y añadir uno más en [?], y si quiero combinar letras arbitrarias en mayúscula, ¿escribo docenas en ella?

    Expresión regular: c[a-z]t En espera de la correspondencia Los resultados después de la coincidencia:cat cbt cztC2t Análisis: c[a-z]t significa que comienza con "c , termina con "t ", y que en el medio está la letra "a" - "z" cualquiera.

    También hay otros espacios similares:

    [0-9] tiene la misma función que [0123456789]. Compare todos los números. [A-F] corresponde a caracteres mayúsculas de A a F. [A-Z] Compare todos los caracteres en mayúscula de A a Z. [a-z] corresponde a todos los caracteres de letra baja de a a z. [A-z] Compare todos los caracteres de ASCII A a ASCII z ((no sólo compare todos los caracteres, sino también compare los caracteres de A a z en la tabla ASCII, como [ y ^, etc.)). [A-Za-z0-9] Compare todas las letras y números en mayúsculas.

  • Aplicación de no conjuntos de caracteres

    Los conjuntos de caracteres generalmente se usan para especificar un conjunto de caracteres que se requieren para que coincidan. Pero a veces, se desea excluir un conjunto de caracteres que no se desean para que coincidan. Esto se puede hacer mediante la negación de los conjuntos de caracteres.

    La expresión normal es: c[^a-z]t Se espera el texto: cat cbt czt c2t cAt Los resultados de las coincidencias: cat cbt cztc2t cAtAnálisis: Este es el completo contrario al ejemplo anterior.. [a-z] coincide con todos los caracteres en letra baja, mientras que [^a-z] coincide con todos los caracteres que no están en letra baja.

    Note que el carácter ^ es un desacoplamiento de todos los caracteres en el conjunto de caracteres.

  • Los caracteres

    Los elementos tienen un significado especial en las expresiones regulares, donde ya hemos dicho que hay varios elementos, por ejemplo... [y].......................

    Todos los meta-caracteres pueden ser precedidos por una traducción inversa, y cuando se traduce, el carácter se corresponde con sí mismo y no con su significado especial. Por ejemplo, [se corresponde con un " [ ":

    Expresión regular: a[b] En espera de una correspondencia: a[b ab a[[b Los resultados después de la coincidencia:a[bAb a [[b]] Nota: \ se utiliza para traducir el elemento, lo que también significa \ también es un metacarácter. Así que si se necesita para combinar el verdadero \, se puede utilizar \:

    Expresión regular: a\b Se espera que coincida con el texto: a\b a\b a[[b Resultado de la coincidencia: a\ba\ba[[b

  • Caracteres en blanco

    A veces, es posible que necesites combinar los caracteres en blanco que no pueden imprimirse en el texto. Por ejemplo, quieres encontrar todos los caracteres de Tab o todos los caracteres de reemplazo. Puedes usar los caracteres especiales de la tabla siguiente:

    img

    Por ejemplo, \r\n se corresponde con una combinación de cambios de línea de vuelta, que en Windows significa un cambio de línea de archivo. En Linux y sistemas Unix, sólo se puede usar \n.

  • Compare el tipo de caracteres específico

    Hay algunos metatarsos especiales que pueden usarse para combinar conjuntos de caracteres comunes. Estos metatarsos se llaman clases de caracteres de combinación.

    Se puede combinar numérico o no numérico Como se ha dicho anteriormente,[0-9] puede combinarse con todos los números. Si no desea combinarse con ninguno, puede utilizar [^0-9]. La siguiente tabla muestra los caracteres de las categorías numéricas y no numéricas:

    img

    Expresión regular: c\dt En espera de una correspondencia: cat c2t czt c9t Resultados de las coincidencias: catc2tCZTc9t

    La expresión normal es: c\Dt En espera de correlación: cat c2t czt c9t Los resultados después de la coincidencia:catC2tczt¿Qué es esto? Compare caracteres alfabéticos y no alfabéticos Los otros caracteres de clase más comunes son \w y \W:

    img

    La expresión normal es: c\wt En espera de una correspondencia de texto: cat c2t czt c-t c\t Los resultados después de la coincidencia:cat c2t¿Qué quieres decir?

    La expresión normal es: c\Wt En espera de coincidir texto: cat c2t c-t c\t Resultado de la coincidencia: cat c2tc-t c\tCompare espacios y no espacios La última clase de coincidencia que se encontrará es la clase en blanco:

    img

    Expresión regular: c\st En espera de una correspondencia: cat c t c2t c\t Resultados de las coincidencias: catc tLas condiciones de los productos

    La expresión normal es: c\St En espera de una correspondencia: cat c t c2t c\t Los resultados después de la coincidencia:catC tc2t c\t

  • Para que coincida con uno o más caracteres

    El + significa que coincide con uno o más caracteres. Por ejemplo, a coincide con "a", mientras que a+ coincide con uno o más "a".

    La expresión normal es: cat Se espera el texto: ct cat caat caaat Resultado de la coincidencia: ctcat- ¿Qué quieres?

    Expresión regular: ca + t Se espera el texto: ct cat caat caaat Resultado de la coincidencia: ctcat caat caaatCuando se usa + en un conjunto de caracteres, se necesita colocar el símbolo + fuera del conjunto:

    Expresión regular: c[0-9] + t Se espera el texto: ct c0t cat c123t Resultado de la coincidencia: ctc0tel gatoc123tAnálisis: c[0-9]+t representa una cadena de uno o más dígitos en el medio que comienza con "c" y termina con "t".

    Por supuesto, [0-9+] también es una expresión regular válida, pero representa un conjunto de caracteres que contienen los símbolos "0" - "9" y "+".

    En general, los meta caracteres como. y + se usan como significados literales cuando se usan en conjuntos de caracteres, por lo que no es necesario traducirlos. Pero también está bien traducirlos, por lo que las funciones de [0-9+] y [0-9+] son las mismas.

    Nota: + es un metacarácter, y para que coincida con "+" se requiere el uso de la traducción +。

  • Compare cero o más caracteres

    Si se desea que se combinen cero o más caracteres, se puede usar el símbolo * meta.

    Expresión regular: ca*t En espera de la correspondencia Los resultados después de la coincidencia:ct cat caat¿Qué es esto? Nota: * Los símbolos son meta caracteres. Para poder combinar "*", se requiere una transformación *.

  • Para que coincida con cero o un carácter.

    ? puede combinar cero o un carácter.

    La expresión normal es: ca?t En espera de la correspondencia Los resultados después de la coincidencia:ct catCaat cbt Nota:? es un símbolo de metacaracteres.? requiere una transformación? para que pueda combinarse con "? ".

  • Usar el número de coincidencias

    Las expresiones normales permiten especificar el número de veces que se puede combinar. El número puede ser especificado entre el número de veces que se puede combinar. Nota: {y} también son meta-caracteres, por lo que se requiere una traducción cuando se usa el significado literal.

    El número exacto de coincidencias Para especificar el número de veces que se va a combinar, puedes introducir un número entre {y}; por ejemplo, {3} va a combinar los tres caracteres o conjuntos anteriores:

    La expresión normal es: ca{3}t En espera de coincidir texto: ct cat caaat cbt Resultado de la búsqueda: ct catcaaat¿Qué es esto? El número mínimo de coincidencias También podemos especificar solo el valor mínimo de la coincidencia. Por ejemplo, {2,} significa coincidir 2 o más veces:

    La expresión normal es: ca{1,} t En espera de coincidir texto: ct cat caaat cbt Resultado de la coincidencia: ctcat caaat¿Qué es esto? Compatibilidad entre números También podemos usar el valor mínimo y el valor máximo para determinar el número de coincidencias. Por ejemplo, {2,3} significa que hay una coincidencia mínima de 2 veces y una coincidencia máxima de 3 veces.

    La expresión normal es: ca{2,3} t En espera de coincidir texto: ct cat caaat cbt Resultado de la búsqueda: ct catcaaat¿Qué es esto? Así que ¿y la función de {0,1} es la misma + y la función de {1,} es la misma?.

  • Aplicación sin avaricia

    Para empezar, veamos los siguientes ejemplos:

    La expresión normal es: s.*g En espera de una correspondencia Los resultados de las coincidencias: xiao song xiao song Análisis: s.*g no coincide con las dos "canciones" como se esperaba, sino que coincide con todo el texto entre la primera s y la última g.

    Esto se debe a que * y + son coincidencias codiciosas. Es decir, las expresiones regulares siempre buscan la coincidencia más grande, no la menor, que es una intención.

    Sin embargo, si no desea una coincidencia de avaricia, utilice la coincidencia no avaricia de estas palabras de medida (coincida con la menor cantidad posible de caracteres).

    img

    ¿Qué es eso?La versión no codiciada de la página web de Google, por lo que se puede usar *? para modificar el ejemplo anterior:

    正则表达式:s.¿Por qué? En espera de coincidir texto: xiao song xiao song Los resultados de las coincidencias: xiaosong¿Qué quieres decir?song 分析:可以看到s.?g se corresponde con dos "canciones".

  • Define las fronteras de la cadena

    Los meta-caracteres que coinciden con los bordes de la cadena son ^ y $, respectivamente para el inicio y el final de la cadena.

    ↑ Se usa como sigue:

    La expresión normal es: ^ xiao

    En espera de una correspondencia Los resultados después de la coincidencia:xiaocanción

    En espera de una correspondencia Los resultados de las coincidencias: axiaosong Análisis: ^ xiao corresponde a una cadena que comienza con " xiao ".

    $ se usa de la siguiente manera:

    La expresión oficial es: song$

    En espera de una correspondencia Los resultados de las coincidencias: xiaosong

    En espera de una correspondencia Los resultados de las coincidencias: Xiaosonga Análisis: "song$" corresponde a una cadena que termina en "song".

    Compartir:

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

    Texto en espera de coincidencia: a1b234ABC Los resultados después de la coincidencia:a1b234ABC

    El texto que se espera que coincida: + a1b23 = 4ABC Resultado de la coincidencia: + a1b23 = 4ABC Análisis: ^ [0-9a-zA-Z] {4,} $ corresponde a un número o letra y tiene un número de dígitos mayor que el de una cadena de cuatro dígitos.

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

  • Usar el modo de varias líneas

    Sin embargo, se puede activar el modo multilíneo. En el modo multilíneo, el motor de expresiones regulares usa el símbolo de cambio como separador de la cadena, el ^ corresponde al principio del texto o al comienzo de una línea, y el $ corresponde al final del texto o al final de una línea.

    En este caso, el ejemplo anterior fue modificado:

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

    Texto en espera de coincidencia: a1b234ABC + a1b23 es 4ABC ¿Qué es esto?

    Los resultados después de la coincidencia:a1b234ABC+a1b23=4ABC El número de unidades de carga de las unidades de carga de las unidades de cargaABC123456Análisis: ((?m) ^ [0-9a-zA-Z]{4,} $ se corresponde con cada línea de números o letras, y el número de dígitos es mayor que la cadena de cuatro dígitos.

    Nota: Si se utiliza el patrón de múltiples líneas, el m debe colocarse al principio de la expresión regular. (?m) no es compatible con 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 una cadena de matches y \Z para el final de una cadena de matches. Si lo hacen, estos metacarácter tienen la misma función que ^, $. Pero estos metacarácter no pueden utilizar la modificación de \?m y, por lo tanto, no pueden usarse en el modo de múltiples líneas.

Este es un primer paso para aprender las expresiones regulares sistemáticamente.

Traducido y traducido desde el libro iOS_Chiso Sango


Más.