¿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.
Las expresiones normales pueden contener solo texto ordinario, representando una coincidencia exacta; por ejemplo:
La expresión normal es:song
En espera de correlación: xiao songge, xiao songge
Los resultados de las coincidencias: xiaosong
Ge, 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
. 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
cet
Caat 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 cetcaat
Perro
. 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.t
El 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\t
Perro
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
cbt
Eso es todo.
Análisis: [ab] se corresponde con "a
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
czt
C2t
Análisis: c[a-z]t significa que comienza con "c
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.
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
cAt
Aná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 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[b
Ab 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\b
a[[b
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:
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.
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:
Expresión regular: c\dt
En espera de una correspondencia: cat c2t czt c9t
Resultados de las coincidencias: catc2t
CZTc9t
La expresión normal es: c\Dt
En espera de correlación: cat c2t czt c9t
Los resultados después de la coincidencia:cat
C2tczt
¿Qué es esto?
Compare caracteres alfabéticos y no alfabéticos
Los otros caracteres de clase más comunes son \w y \W:
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\t
Compare espacios y no espacios
La última clase de coincidencia que se encontrará es la clase en blanco:
Expresión regular: c\st
En espera de una correspondencia: cat c t c2t c\t
Resultados de las coincidencias: catc t
Las 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:cat
C tc2t
c\t
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
caaat
Cuando 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: ctc0t
el gatoc123t
Aná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 +。
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 *.
? 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
cat
Caat cbt
Nota:? es un símbolo de metacaracteres.? requiere una transformación? para que pueda combinarse con "? ".
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?.
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).
¿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".
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:xiao
canció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].
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 cargaABC123456
Aná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.
Traducido y traducido desde el libro iOS_Chiso Sango