Preguntas frecuentes y soluciones

La idea básica de utilizar reglas regulares para resolver problemas. Hay algunos métodos que son relativamente fijos, como descomponer el problema en varios problemas pequeños y resolver cada problema pequeño en consecuencia: si puede haber varios personajes en una determinada posición, utilice grupos de caracteres. Si hay varias cadenas en una posición determinada, utilice la estructura de selección múltiple. Si el número de ocurrencias es incierto, utilice cuantificadores. Si existen requisitos para la posición que aparece, utilice puntos de anclaje para bloquear la posición.

Si ciertos caracteres no pueden aparecer en el contenido a buscar, esta situación es relativamente simple. Puede excluir grupos de caracteres usando corchetes. Por ejemplo, las letras que no son vocales se pueden representar con [^aeiou].

Preguntas frecuentes y soluciones

 1. Coincidencia de números

La combinación de números es relativamente simple y se puede resolver fácilmente mediante los grupos de caracteres, cuantificadores, etc. que hemos aprendido.

  • Los números se pueden representar mediante \d o [0-9] en expresiones regulares.
  • Si hay varios números consecutivos, puede usar \d+ o [0-9]+.
  • Si hay n bits de datos, se puede utilizar \d{n}.
  • Si se trata de al menos n bits de datos, se puede utilizar \d{n,}.
  • Si es un número de mn dígitos, puedes usar \d{m,n}.

2. Relaciona números positivos, números negativos y decimales.

Si desea que la expresión regular coincida con números como 3, 3.14, -3.3, +2.7, etc., debe tener en cuenta que puede haber o no símbolos positivos y negativos al principio, por lo que puede usar [-+ ]? para expresar el punto decimal y lo siguiente El contenido puede no estar allí, por lo que puede usar (?:\.\d+)? para representarlo. Por lo tanto, la expresión regular para hacer coincidir números positivos, números negativos y decimales puede ser escrito como [-+]?\d+(?:\.\d+) ?.

Los enteros no negativos, incluidos 0 y positivos, se pueden expresar como [1-9]\d*|0.

Los enteros no positivos, incluidos 0 y negativos, se pueden expresar como -[1-9]\d*|0.

3. Números de coma flotante

Representación numérica de coma flotante negativa: -\d+(?:\.\d+)?.

Representación positiva de números en coma flotante: \+?(?:\d+(?:\.\d+)?|\.\d+).

4. Números hexadecimales

Además del 0 al 9, los números hexadecimales también tienen af ​​(o AF) que representa los seis números del 10 al 15, por lo que la expresión regular se puede escribir como [0-9A-Fa-f]+.

5. Número de teléfono móvil

Simplemente podemos usar grupos de caracteres y ramas de selección múltiple para hacer coincidir con precisión los segmentos de números de teléfonos móviles. Si solo limita los primeros 2 dígitos, puede expresarlo como 1[3-9]\d{9}. Si desea ser más preciso, limítelo a los primeros tres dígitos, como usar 1(?:3 \d|4[5-9] |5[0-35-9]|6[2567]|7[0-8]|8\d|9[1389])\d{8}. Si desea tener una precisión de 4 o incluso 5 dígitos, puede escribirlo usted mismo según la información del segmento de número público, pero debe tenerse en cuenta que cuanto más preciso sea, siempre que haya un nuevo segmento de número, tendrá Cambiar esta regla, que será difícil de mantener, algo difícil. Además, en el uso real, es posible que también desee considerar la situación en la que algunos números tienen prefijos como +86 o 0086.

6. número de identificación

El número de tarjeta de identificación de mi país se divide en dos generaciones, la primera generación tiene 15 dígitos y la segunda generación tiene 18 dígitos. Si es de 18 bits, el último dígito puede ser X (o {14} para expresar que la segunda generación tiene 3 dígitos más de datos que la primera generación. Puedes usar el cuantificador 0 a 1 veces, que se escribe como

[1-9]\d{14}(\d\d[0-9Xx])?。

7. código postal

El código postal es generalmente un número de 6 dígitos, que es relativamente simple y se puede escribir como \d{6}. Es muy probable que el número de 6 dígitos también aparezca en otras situaciones, como parte del número de teléfono móvil y parte del número de identificación, por lo que si se trata de extracción de datos, generalmente se debe agregar una afirmación, que se escribe como (?<!\d)\d{6}(?!\d).

8. Número QQ de Tencent

Actualmente, los números QQ no pueden comenzar con 0. El más largo tiene 10 dígitos y el más corto comienza con 10000 (5 dígitos). Por las reglas, podemos saber que el primer número es del 1 al 9, seguido de 4 a 9 dígitos, es decir, se puede representar por [1-9][0-9]{4,9}.

9. Caracteres chinos

El chino es un carácter Unicode de varios bytes, pero algunos idiomas no admiten este atributo. Se puede utilizar otro método, que es el rango de valores del código. El rango del chino está entre 4E00 - 9FFF, que puede cubrir la mayoría de situaciones de uso diario. .

Los diferentes idiomas tienen algunas diferencias en los métodos de representación. Por ejemplo, en Python, Java y JavaScript, Unicode se puede expresar como valor de código \u, es decir, la expresión regular que coincide con el chino se puede escribir como [\u4E00-\u9FFF ]. Si se usa en PHP, Unicode debe escribirse en el formato \u{valor del código}.

10. dirección IPv4

Las direcciones IPv4 generalmente se expresan en el formato 27.86.1.226, con 4 números separados por puntos y el rango de cada dígito es de 0 a 255. Por ejemplo, al extraer IP de los registros, si no necesita tanta precisión, generalmente use \d{1,3 }(\.\d{1,3}){3} es suficiente. Tenga en cuenta que es necesario escapar del punto.

Podemos expresar IPv4 como XXXX, podemos usar cuantificadores y escribirlo como (?:X.){3}X o X(?:.X){3}. Dado que le agregamos paréntesis, la expresión regular de IPv4 debería ser Escrito como

(?:1\d\d|2[0-4]\d|25[0-5]|0?[1-9]\d|0{0,2}\d)(?:\.( ?:1\d\d|2[0-4]\d|25[0-5]|0?[1-9]\d|0{0,2}\d)){3}。

11. Fecha y hora

Suponiendo que el formato de fecha es aaaa-mm-dd, debería ser \d{4}-(?:1[0-2]|0?[1-9])-(?:[12]\d|3[ 01] |0?[1-9]).

Por ejemplo, el formato de hora es 23:34, si es un reloj de 24 horas, las horas son 0-23 y los minutos son 0-59, por lo que se puede escribir como (?:2[0-3]| 1\d|0?\d):( ?:[1-5]\d|0?\d).

12. correo electrónico

La composición del buzón es relativamente compleja, el formato es nombre de usuario @ nombre de host, la parte del nombre de usuario generalmente puede estar compuesta por letras en inglés, números, guiones bajos, puntos, etc., pero el punto no puede estar al principio ni aparecer repetidamente. . Según RFC5322, no existe forma de escribir una expresión regular perfecta, podemos implementar algunas versiones simplificadas, como: [a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+ \.[a -zA-Z0-9-.]+.

13. Etiquetas de páginas web

Haga coincidir las etiquetas que aparecen, como el título. Generalmente, las etiquetas de las páginas web no distinguen entre mayúsculas y minúsculas. Podemos usar (?i)<title>.*?</title> para hacer coincidir. Al extraer el contenido entre comillas, puede usar [^"]+, y al extraer el contenido entre corchetes, puede usar [^>]+ y otros métodos.

Este artículo es una nota de estudio del día 29 de agosto. El contenido proviene del "Curso de Introducción a las Expresiones Regulares" de Geek Time , este curso se recomienda.

Supongo que te gusta

Origin blog.csdn.net/key_3_feng/article/details/132571422
Recomendado
Clasificación