Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> python

Python - Expresiones regulares

Página anteriorPágina siguiente

Una expresión regular es una secuencia especial de caracteres que le ayuda a hacer coincidir o encontrar otras cadenas o conjuntos de cadenas, utilizando una sintaxis especializada contenida en un patrón. Las expresiones regulares son ampliamente utilizadas en el mundo UNIX.

El módulo Python re proporciona soporte completo para expresiones regulares similares a Perl en Python. El módulo re lanza la excepción re.error si ocurre un error al compilar o usar una expresión regular.

Cubriríamos dos funciones importantes, que se usarían para manejar expresiones regulares. Pero una cosa pequeña primero:hay varios caracteres, que tendrían un significado especial cuando se usan en expresiones regulares. Para evitar cualquier confusión al tratar con expresiones regulares, usaríamos Raw Strings como r'expression' .

El partido Función

Esta función intenta hacer coincidir RE patrón a cadena con banderas opcionales .

Esta es la sintaxis de esta función −

re.match(pattern, string, flags=0)

Aquí está la descripción de los parámetros −

Sr.No. Parámetro y descripción
1

patrón

Esta es la expresión regular que debe coincidir.

2

cadena

Esta es la cadena, que se buscaría para que coincida con el patrón al principio de la cadena.

3

banderas

Puede especificar diferentes banderas usando OR bit a bit (|). Estos son modificadores, que se enumeran en la siguiente tabla.

El re.partido la función devuelve una coincidencia objeto en caso de éxito, Ninguno sobre el fracaso Usamos grupo(num) o grupos() función de coincidir objeto para obtener la expresión coincidente.

Sr.No. Método y descripción del objeto de coincidencia
1

grupo(num=0)

Este método devuelve la coincidencia completa (o el número de subgrupo específico)

2

grupos()

Este método devuelve todos los subgrupos coincidentes en una tupla (vacío si no hubiera ninguno)

Ejemplo

Demostración en vivo
#!/usr/bin/python
import re

line = "Cats are smarter than dogs"

matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)

if matchObj:
   print "matchObj.group() : ", matchObj.group()
   print "matchObj.group(1) : ", matchObj.group(1)
   print "matchObj.group(2) : ", matchObj.group(2)
else:
   print "No match!!"

Cuando se ejecuta el código anterior, produce el siguiente resultado −

matchObj.group() :  Cats are smarter than dogs
matchObj.group(1) :  Cats
matchObj.group(2) :  smarter

La búsqueda Función

Esta función busca la primera aparición de RE patrón dentro de cadena con banderas opcionales .

Esta es la sintaxis de esta función −

re.search(pattern, string, flags=0)

Aquí está la descripción de los parámetros −

Sr.No. Parámetro y descripción
1

patrón

Esta es la expresión regular que debe coincidir.

2

cadena

Esta es la cadena, que se buscaría para que coincida con el patrón en cualquier parte de la cadena.

3

banderas

Puede especificar diferentes banderas usando OR bit a bit (|). Estos son modificadores, que se enumeran en la siguiente tabla.

La búsqueda la función devuelve una coincidencia objeto en caso de éxito, ninguno sobre el fracaso Usamos grupo(num) o grupos() función de coincidir objeto para obtener la expresión coincidente.

Sr.No. Hacer coincidir métodos y descripción de objetos
1

grupo(num=0)

Este método devuelve la coincidencia completa (o el número de subgrupo específico)

2

grupos()

Este método devuelve todos los subgrupos coincidentes en una tupla (vacío si no hubiera ninguno)

Ejemplo

Demostración en vivo
#!/usr/bin/python
import re

line = "Cats are smarter than dogs";

searchObj = re.search( r'(.*) are (.*?) .*', line, re.M|re.I)

if searchObj:
   print "searchObj.group() : ", searchObj.group()
   print "searchObj.group(1) : ", searchObj.group(1)
   print "searchObj.group(2) : ", searchObj.group(2)
else:
   print "Nothing found!!"

Cuando se ejecuta el código anterior, produce el siguiente resultado −

searchObj.group() :  Cats are smarter than dogs
searchObj.group(1) :  Cats
searchObj.group(2) :  smarter

Coincidencia versus búsqueda

Python ofrece dos operaciones primitivas diferentes basadas en expresiones regulares:match busca una coincidencia solo al comienzo de la cadena, mientras que busca busca una coincidencia en cualquier parte de la cadena (esto es lo que hace Perl de forma predeterminada).

Ejemplo

Demostración en vivo
#!/usr/bin/python
import re

line = "Cats are smarter than dogs";

matchObj = re.match( r'dogs', line, re.M|re.I)
if matchObj:
   print "match --> matchObj.group() : ", matchObj.group()
else:
   print "No match!!"

searchObj = re.search( r'dogs', line, re.M|re.I)
if searchObj:
   print "search --> searchObj.group() : ", searchObj.group()
else:
   print "Nothing found!!"

Cuando se ejecuta el código anterior, produce el siguiente resultado −

No match!!
search --> searchObj.group() :  dogs

Buscar y reemplazar

Uno de los re más importantes métodos que usan expresiones regulares es sub .

Sintaxis

re.sub(pattern, repl, string, max=0)

Este método reemplaza todas las ocurrencias del RE patrón en cadena con reemplazo , sustituyendo todas las ocurrencias a menos que max previsto. Este método devuelve una cadena modificada.

Ejemplo

Demostración en vivo
#!/usr/bin/python
import re

phone = "2004-959-559 # This is Phone Number"

# Delete Python-style comments
num = re.sub(r'#.*$', "", phone)
print "Phone Num : ", num

# Remove anything other than digits
num = re.sub(r'\D', "", phone)    
print "Phone Num : ", num

Cuando se ejecuta el código anterior, produce el siguiente resultado −

Phone Num :  2004-959-559
Phone Num :  2004959559

Modificadores de expresiones regulares:Indicadores de opciones

Los literales de expresiones regulares pueden incluir un modificador opcional para controlar varios aspectos de la coincidencia. Los modificadores se especifican como un indicador opcional. Puede proporcionar múltiples modificadores usando OR exclusivo (|), como se muestra anteriormente y puede estar representado por uno de estos −

Sr.No. Modificador y descripción
1

re.I

Realiza coincidencias que no distinguen entre mayúsculas y minúsculas.

2

re.L

Interpreta las palabras según la configuración regional actual. Esta interpretación afecta al grupo alfabético (\w y \W), así como al comportamiento del límite de palabras (\b y \B).

3

re.M

Hace que $ coincida con el final de una línea (no solo con el final de la cadena) y hace que ^ coincida con el comienzo de cualquier línea (no solo con el comienzo de la cadena).

4

re.S

Hace que un punto (punto) coincida con cualquier carácter, incluido un salto de línea.

5

re.U

Interpreta las letras según el juego de caracteres Unicode. Esta bandera afecta el comportamiento de \w, \W, \b, \B.

6

re.X

Permite una sintaxis de expresión regular "más linda". Ignora los espacios en blanco (excepto dentro de un conjunto [] o cuando se escapa con una barra invertida) y trata el # sin escape como un marcador de comentario.

Patrones de expresiones regulares

Excepto por los caracteres de control, (+ ? . * ^ $ ( ) [ ] { } | \) , todos los caracteres coinciden entre sí. Puede escapar de un carácter de control precediéndolo con una barra invertida.

La siguiente tabla enumera la sintaxis de expresiones regulares que está disponible en Python −

Sr.No. Patrón y descripción
1

^

Coincide con el principio de la línea.

2

$

Coincide con el final de la línea.

3

.

Coincide con cualquier carácter individual excepto nueva línea. El uso de la opción m también permite que coincida con la nueva línea.

4

[...]

Coincide con cualquier carácter individual entre paréntesis.

5

[^...]

Coincide con cualquier carácter único que no esté entre paréntesis

6

re*

Coincide con 0 o más apariciones de la expresión anterior.

7

re+

Coincide con 1 o más ocurrencias de la expresión anterior.

8

re?

Coincide con 0 o 1 aparición de la expresión anterior.

9

re{ n

Coincide exactamente con el número n de ocurrencias de la expresión anterior.

10

re{ n,

Coincide con n o más apariciones de la expresión anterior.

11

re{ n, m

Coincide con al menos n y como máximo m ocurrencias de la expresión anterior.

12

un| segundo

Coincide con a o b.

13

(re)

Agrupa expresiones regulares y recuerda el texto coincidente.

14

(?imx)

Alterna temporalmente las opciones i, m o x dentro de una expresión regular. Si está entre paréntesis, solo esa área se ve afectada.

15

(?-imx)

Desactiva temporalmente las opciones i, m o x dentro de una expresión regular. Si está entre paréntesis, solo esa área se ve afectada.

16

(?:re)

Agrupa expresiones regulares sin recordar el texto coincidente.

17

(?imx:re)

Cambia temporalmente las opciones i, m o x entre paréntesis.

18

(?-imx:re)

Desactiva temporalmente las opciones i, m o x entre paréntesis.

19

(?#...)

Comentar.

20

(?=re)

Especifica la posición utilizando un patrón. No tiene rango.

21

(?! re)

Especifica la posición mediante la negación del patrón. No tiene rango.

22

(?> re)

Coincide con un patrón independiente sin retroceder.

23

\n

Coincide con caracteres de palabras.

24

\W

Coincide con caracteres que no son palabras.

25

\s

Coincide con espacios en blanco. Equivale a [\t\n\r\f].

26

\S

Coincide con espacios que no son en blanco.

27

\d

Coincide con dígitos. Equivalente a [0-9].

28

\D

Coincide con no dígitos.

29

\A

Coincide con el principio de la cadena.

30

\Z

Coincide con el final de la cadena. Si existe una nueva línea, coincide justo antes de la nueva línea.

31

\z

Coincide con el final de la cadena.

32

\G

Coincide con el punto donde terminó el último partido.

33

\b

Coincide con los límites de las palabras cuando está fuera de los corchetes. Coincide con el retroceso (0x08) cuando está dentro de corchetes.

34

\B

Coincide con los límites de las no palabras.

35

\n, \t, etc.

Coincide con saltos de línea, retornos de carro, tabulaciones, etc.

36

\1...\9

Coincide con la enésima subexpresión agrupada.

37

\10

Coincide con la enésima subexpresión agrupada si ya coincidía. De lo contrario, se refiere a la representación octal de un código de carácter.

Ejemplos de expresiones regulares

Caracteres literales

Sr.No. Ejemplo y descripción
1

pitón

Coincide con "pitón".

Clases de personajes

Sr.No. Ejemplo y descripción
1

[Pp]ython

Coincide con "Python" o "python"

2

frotar[vosotros]

Coincide con "rubí" o "rubí"

3

[aeiou]

Coincide con cualquier vocal minúscula

4

[0-9]

Coincide con cualquier dígito; igual que [0123456789]

5

[a-z]

Coincide con cualquier letra ASCII minúscula

6

[A-Z]

Coincide con cualquier letra ASCII mayúscula

7

[a-zA-Z0-9]

Coincide con cualquiera de los anteriores

8

[^aeiou]

Coincide con cualquier cosa que no sea una vocal minúscula

9

[^0-9]

Coincide con cualquier cosa que no sea un dígito

Clases de personajes especiales

Sr.No. Ejemplo y descripción
1

.

Coincide con cualquier carácter excepto nueva línea

2

\d

Coincide con un dígito:[0-9]

3

\D

Coincide con un número que no sea un dígito:[^0-9]

4

\s

Coincide con un carácter de espacio en blanco:[ \t\r\n\f]

5

\S

Coincidir con espacios que no sean en blanco:[^ \t\r\n\f]

6

\n

Coincide con un carácter de una sola palabra:[A-Za-z0-9_]

7

\W

Coincide con un carácter que no es una palabra:[^A-Za-z0-9_]

Casos de repetición

Sr.No. Ejemplo y descripción
1

¿rubí?

Haga coincidir "rub" o "ruby":la y es opcional

2

rubí*

Coincide con "frotar" más 0 o más años

3

rubí+

Coincide con "frotar" más 1 o más ys

4

\d{3}

Coincide exactamente con 3 dígitos

5

\d{3,

Coincide con 3 o más dígitos

6

\d{3,5}

Combina 3, 4 o 5 dígitos

Repetición no codiciosa

Esto coincide con el menor número de repeticiones −

Sr.No. Ejemplo y descripción
1

<.*>

Repetición codiciosa:coincide con "perl>"

2

<.*?>

No codicioso:coincide con "" en "perl>"

Agrupar con paréntesis

Sr.No. Ejemplo y descripción
1

\D\d+

Sin grupo:+ repite \d

2

(\D\d)+

Agrupados:+ repite \D\d par

3

([Pp]ython(, )?)+

Haga coincidir "Python", "Python, python, python", etc.

Referencias

Esto coincide con un grupo previamente emparejado de nuevo −

Sr.No. Ejemplo y descripción
1

([Pp])ython&\1fallas

Haga coincidir python&pails o Python&Pails

2

(['"])[^\1]*\1

Cadena entre comillas simples o dobles. \1 coincide con lo que coincidió el primer grupo. \2 coincide con lo que coincida el segundo grupo, etc.

Alternativas

Sr.No. Ejemplo y descripción
1

python|perl

Coincide con "python" o "perl"

2

frotar(y|le))

Coincide con "rubí" o "rublo"

3

Python(!+|\?)

"Python" seguido de uno o más! o uno ?

Anclajes

Esto necesita especificar la posición de coincidencia.

Sr.No. Ejemplo y descripción
1

^Pitón

Haga coincidir "Python" al comienzo de una cadena o línea interna

2

Python$

Coincide con "Python" al final de una cadena o línea

3

\APython

Coincide con "Python" al comienzo de una cadena

4

Python\Z

Coincide con "Python" al final de una cadena

5

\bPython\b

Coincide con "Python" en un límite de palabra

6

\brub\B

\B no es un límite de palabra:coincide con "rub" en "rube" y "ruby", pero no solo

7

Python(?=!)

Coincide con "Python", si va seguido de un signo de exclamación.

8

Python(?!!)

Coincide con "Python", si no va seguido de un signo de exclamación.

Sintaxis especial con paréntesis

Sr.No. Ejemplo y descripción
1

R(?#comentario)

Coincide con "R". Todo lo demás es un comentario

2

R(?i)ubí

No distingue entre mayúsculas y minúsculas al hacer coincidir "uby"

3

R(?i:uby)

Igual que arriba

4

frotar(?:y|le))

Agrupar solo sin crear \1 referencia inversa


python

  1. Tipos de datos de Python
  2. Operadores de Python
  3. Declaración de paso de Python
  4. Argumentos de la función de Python
  5. Diccionario de Python
  6. Iteradores de Python
  7. Cierres Python
  8. Python expresión regular
  9. Fecha y hora de Python
  10. Java - Expresiones regulares
  11. C# - Expresiones regulares