re.S

re.S: indica la acción a extenderse en toda la cadena, incluyendo '\ n', el '\ n' se integra en una cadena de caracteres ordinarios

caso

import re
a = '''asdfhellopass:
    123
    worldaf
    '''
b = re.findall('hello(.*?)world',a)
c = re.findall('hello(.*?)world',a,re.S)
print 'b is ' , b
print 'c is ' , c

Los resultados son los siguientes:

b is  []
c is  ['pass:\n\t123\n\t']

análisis

hola (. *?) mundo representa todos los no-coincidencia entre la palabra y hola carácter '\ n'
cuando no esté en uso re.S, línea por línea, para que coincida con ella (en '\ n' para distinguir cada línea), b no es re.S utilizando la cadena primero emparejado 'asdfhellopass:' y, a continuación, volver a coincidir con la cadena '123' hasta el final, así que no hay ajustes indicados coincidan
cuando se utiliza re.S, ya que coincide con la cadena 'asdfhellopass: \ n \ t123 \ n \ twordaf 'es como el resultado
esta vez se puede sentir dudas. además de no coincidir con' todo el solo carácter \ n 'fuera de él? ¿Por qué resultado hay '\ n', porque esta vez re.S '\ n' se ha convertido en un carácter ordinario, ya no es un salto de línea

Supongo que te gusta

Origin www.cnblogs.com/Wuser/p/12551448.html
Recomendado
Clasificación