[Aprendizaje en Python] Expresiones regulares

Las expresiones regulares (o RE) son lenguajes de programación pequeños y altamente especializados que están integrados en Python e implementados a través del módulo re. El patrón de expresión regular se compila en una serie de códigos de bytes y luego se ejecuta mediante el motor de coincidencia escrito en C.

1. Caracteres ordinarios

Segundo, el meta personaje

1. Metacaracteres. ^ $ * +? {}

Código de copia
1 # Introducir regular: ingrese coincidencia difusa 
 2 import re 
 3 
 4 # '.' El valor predeterminado coincide con cualquier carácter excepto \ n (carácter de nueva línea), si especifica flags = re.DOTALL, luego coincide con cualquier carácter, incluida la nueva línea 
 5 res = re.findall ('W..l', 'Hello World !!') # ['Worl'] 
 6 ret = re.findall ('W..l', 'Hello W \ nrld !!', flags = re.DOTALL) # ['W \ nrl'] 
 7 
 8 # '^' coincide con el comienzo del carácter, si especifica flags = re.MULTILINE, esto también puede coincidir (r "^ a", "\ nabc \ neee", flags = re.MULTILINE) 
 9 res = re.findall ('^ h ... o', 'hjaookhello') # ['hjaoo'] 
10 ret = re.findall (r '^ a', '\ nabc \ neee ', flags = re.MULTILINE) # [' a '] 
11 
12 #' $ 'coincide con el final del carácter, si especifica flags = re.MULTILINE, esto también puede coincidir ("foo $", "bfoo \ nsdfsf", banderas = re.MULTILINE) 
13 res = re.findall ('a..x $', 'aaaalexauex') # ['auex'] 
14 ret = re.findall ('foo $', 'bfoo \ nsdfsf', flags = re.MULTILINE ) # ['foo']
15  
16 # '*' coincide con el carácter antes del * número 0 o más veces
17 res = re.findall ("ab *", "cabb3abcbbac") # ['abb', 'ab', 'a'] 
18 
19 # '+' coincide con el carácter anterior 1 o más veces 
20 res = re .findall ("ab +", "cabb3abcbbac") # ['abb', 'ab'] 
21 
22 # '?' coincide con el carácter anterior 1 o 0 veces 
23 res = re.findall ("ab?", "cabb3abcbbac ") # ['' ab ',' ab ',' a '] 
24 
25 #' {m} 'coincide con el carácter anterior m veces, {m, n} representa el rango de tiempos coincidentes 
26 res = re.findall (" a {1,3} b "," caaabb3abcbbaabc ") # ['aaab', 'ab', 'aab'] 
27 res = re.findall (" a {1,3} b "," aaaab ") # [ 'aaab'] 
28 
29 # Conclusión : * es igual a {0, + ∞}, + es igual a {0, + ∞} ,? es igual a {0,1}, *, + ,? se recomiendan
Código de copia

Nota: Los '*' y '+' anteriores son coincidencias codiciosas (tantas coincidencias como sea posible), seguidas de '?' Para que sean coincidencias perezosas (la menor cantidad posible de coincidencias)

1 importación re 
2 res = re.findall ("ab +", "abbbbb") # ['abbbbb'] 
3 res = re.findall ("ab *", "abbbbb") # ['abbbbb'] 
4 res = re .findall ("ab +?", "abbbbb") # ['ab'] 
5 res = re.findall ("ab *?", "abbbbb") # ['a']

2. El conjunto de caracteres de metacaracteres []

Código de copia
1 # [] Hay varios caracteres que representan la relación de sí o 
 2 res = re.findall ('c [on] m', 'comaxcnm') # ['com', 'cnm'] 
 3 res = re.findall ( '[az]', 'comaxcn') # ['c', 'o', 'm', 'a', 'x', 'c', 'n'] 
 4 
 5 # Los metacaracteres se colocan en [] , Cancele la función especial de metacaracteres (\, ^, - excepción) 
 6 res = re.findall ('[w * +, $]', 'co, ma + wc $ n *') # [',', ' + ',' w ',' $ ',' * '] 
 7 
 8 # ^ Poner en [], lo que significa inverso 
 9 res = re.findall (' [^ t] ',' atxmetu ') # [' a ',' x ',' m ',' e ',' u '] 
10 res = re.findall (' [^ tx] ',' atxmetu ') # [' a ',' m ',' e ' , 'u'] 
11 
12 # 
-Poner en [], significa el rango 13 res = re.findall ('[1-9a-z] ',' 13mawcCB ') # [' 1 ',' 3 ',' m ',' a ',' w ',' c '] 
14 res = re.findall (' [1- 9a-zA-Z] ',' 13mawcCB ') # [' 1 ',' 3 ',' m ',' a ',' w ',' c ',' C ',' B '] 
15 
16 # reverse Barra oblicua seguida de caracteres ordinarios para funciones especiales
17 res = re.findall ('[\ w \ d]', '13mawcCB') # ['1', '3', 'm', 'a', 'w', 'c', 'C', 'SI']
Código de copia

3. Caracteres de traducción de metacaracteres

Código de copia
1 # \ d coincide con cualquier dígito decimal, equivalente a [0-9] 
 2 # \ D coincide con cualquier carácter no numérico, equivalente a [^ 0-9] 
 3 # \ s coincide con cualquier carácter en blanco, equivalente a [\ t \ n \ r \ f \ v] 
 4 # \ S coincide con cualquier carácter no en blanco, equivalente a [^ \ t \ n \ r \ f \ v] 
 5 # \ w coincide con cualquier carácter alfanumérico, equivalente a [a-zA-Z0 -9] 
 6 # \ W coincide con cualquier carácter no alfanumérico, equivalente a [^ a-zA-Z0-9] 
 7 # \ b coincide con el límite de un carácter especial 
 8 
 9 # '\' barra invertida seguida de caracteres ordinarios Función especial 
10 print (re.findall ('\ d {5}', 'ae12345cw67890')) # ['12345', '67890'] 
11 print (re.findall ('\ sasd', 'fak asd')) # ['asd'] 
12 print (re.findall ('\ w', 'fak asd')) # ['f', 'a', 'k', 'a', 's', 'd'] 
13 print (re.findall (r'I \ b ',' I am a LI $ T ')) # [' I ',' I '] 
14 
15 # Barra invertida seguida de la función especial de eliminación de metacaracteres 
16 print (re.findall ('a \.', 'A.jk')) # ['a.'] 
17 print (re.findall ('a \ + ',' a + jk ')) # [' a + ']
Código de copia

Veamos la coincidencia de la barra invertida "\" de la siguiente manera:

Código de copia
1 # 
Barra invertida \ 2 print (re.findall ('c \ l', 'abc \ le')) # 
Informe de error 3 print (re.findall ('c \\ l', 'abc \ le')) # 
Informe de error 4 print (re.findall ('c \\\\ l', 'abc \ le')) # ['c \\ l'] 
5 print (re.findall (r'c \\ l ',' abc \ le ')) # [' c \\ l '] 
6 
7 # Debido a que \ b es significativo en la tabla ASCII, agregue r 
8 print (re.findall (' \ bblow ',' blow ')) # [], No coincide con la 
impresión 9 (re.findall (r' \ bblow ',' golpe ')) # [' golpe ']
Código de copia

4. Agrupación de metacaracteres ()

Código de copia
1 # () agrupación, los caracteres entre paréntesis en conjunto 
 2 imprimen (re.findall ('(as)', 'jdkasas')) # ['as', 'as'] 
 3 
 4 res = re.search (' (? P <id> \ d {3}) / (? P <name> \ w {3}) ',' weeew34ttt123 / ooo ') 
 5 print (res.group ()) # 123 / ooo 
 6 print (res .group ('id')) # 123 
 7 print (res.group ('name')) # ooo 
 8 
 9 # findall 
10 res = re.findall ('www. (\ w +). com', 'www.baidu .com ') 
11 print (res) # [' baidu '], hay grupos que solo eliminan el contenido del grupo 
12 ret = re.findall (' www. (?: \ w +). com ',' www.baidu.com ') 
13 print (ret) # [' www.baidu.com '], plus ?: Cancelar permiso de grupo 
14 
15 # search 
16 res = re.search (' www. (\ W +). Com ',' www. baidu.com ') 
17 print (res.group ()) # www.baidu.com, diferente de findall
Código de copia

5. El carácter de la tubería de metacaracteres |

1 # | Match | izquierda o | derecha carácter 
2 print (re.findall ('(ab) | \ d', 'rabhdg8sd')) # ['ab', '') 
3 print (re.search ('( ab) | \ d ',' rabhdg8sd '). group ()) # ab

6. Métodos comunes bajo el módulo re

Código de copia
1 # Método de expresión regular 
 2 # re.findall () # Todos los resultados se devuelven a una lista 
 3 # re.search () # Devuelve el primer objeto coincidente (objeto), el objeto puede llamar al método de grupo para Tome el resultado devuelto 
 4 # re.match () # Solo coincida al comienzo de la cadena y solo devuelva un objeto. El objeto puede llamar al método de grupo para obtener el resultado devuelto 
 5 # re.split () # Los caracteres coincidentes se usan como un separador de lista Fu 
 6 # re.sub () # coincide con el carácter y reemplazar 
 7 # re.subn () efecto # sub y el mismo, pero al mismo tiempo será devuelto muchas veces para sustituir el 
 8 # re.compile () # las reglas de concordancia se compilan en un objeto Para uso posterior 
 9 # re.finditer () # devuelve un iterador 
10 
11 # findall: todos los resultados se devuelven a una lista 
12 print (re.findall ('\ d', '12345')) # ['1', '2', '3', '4', '5'] 
13 
14 # búsqueda: coincide con el primer resultado que cumpla las condiciones 
15 res = re.search ('sb', 'adssbeeesb' ) 
16 print (res) # <_sre.SRE_Match object; span = (3,5), match = 'sb'>
17 print (res.group ()) # sb 
18
19 # coincidencia: igual que la búsqueda, pero coincide al comienzo de la cadena 
20 res = re.match ('sb', 'sbaee') 
21 print (res) # <_sre.SRE_Match object; span = (0,2) , match = 'sb'>, si no coincide, devuelve None 
22 print (res.group ()) # sb 
23 
24 # split: el carácter coincidente se usa como un separador de lista 
25 res = re.split ('k', ' djksal ') 
26 print (res) # [' dj ',' sal '] 
27 res = re.split (' [j, s] ',' dsejksal ') 
28 print (res) # [' d ',' e ',' k ',' al '] 
29 res = re.split (' [j, s] ',' sejksal ') 
30 print (res) # [' ',' e ',' k ',' al ' ] 
31 
32 # sub: 
unir caracteres y reemplazar 33 res = re.sub ('a..x', 's..b', 'eealexbb') 
34 print (res) # ees ..bbb 
35 res = re.sub ('ab', '123', 'ablexbab', 1) # El último parámetro es reemplazar varias veces 
36 print (res) # 123lexbab 
37
38 # subn: El efecto es el mismo que sub, devuelve una tupla, además del resultado devuelto, y cuántas veces ha sido reemplazado 
39 res = re.subn ('a..x', 's..b', 'eealexbb ') 
40 print (res) # (' ees..bbb ', 1) 
41 res = re.subn (' ab ',' 123 ',' ablexbab ') # El último parámetro es reemplazar varias veces 
42 print (res) # ('123lexb123', 2) 
43 
44 # compilar: compila la regla de coincidencia en un objeto para su uso posterior 
45 obj = re.compile ('\. Com') # compila la regla de coincidencia en un objeto 
46 res = obj .findall ('fajs.comeee') 
47 ret = obj.findall ('aa.comss.com') 
48 print (res) # ['.com'] 
49 print (ret) # ['.com', '. com '] 
50 
51 # finditer: devuelve un iterador 
52 res = re.finditer (' \ d ',' 12345 ') 
53 print (res) # <objeto callable_iterator en 0x000001E98FE4D7B8> 
54 para i en res: 
55 print (i.group ()) 
56 # 1
57 # 2
58 # 3 
59 # 4 
60 # 5

Supongo que te gusta

Origin www.cnblogs.com/gtea/p/12715270.html
Recomendado
Clasificación