[Expresión regular] Patrones de coincidencia comunes de expresiones regulares

Patrones de coincidencia comunes

modelo describir
\w Coincide con letras, números y guiones bajos.
\W Coincide con guiones bajos no alfanuméricos
\s Coincide con cualquier carácter de espacio en blanco, equivalente a [\t\n\r\f].
\S Coincide con cualquier carácter que no esté vacío
\d Coincide con cualquier número, equivalente a [0-9]
\D Coincide con cualquier no número
\A inicio de cadena de coincidencia
\Z Coincide con el final de la cadena. Si hay una nueva línea, solo coincide el final de la cadena antes de la nueva línea.
\z Cadena de fin de coincidencia
\GRAMO Coincide con la posición donde se completó el último partido.
\norte Coincide con un carácter de nueva línea
\ t coincidir con un carácter de tabulación
^ Coincide con el comienzo de una cadena
ps Coincide con el final de la cuerda.
. Coincide con cualquier carácter, excepto los de nueva línea. Cuando se especifica el indicador re.DOTALL, se puede hacer coincidir cualquier carácter, incluidos los de nueva línea.
[…] Se utiliza para representar un grupo de caracteres, enumerados por separado: [amk] coincide con 'a', 'm' o 'k'
[^…] Caracteres que no están en []: [^abc] coincide con caracteres excepto a, b, c.
* Coincide con 0 o más expresiones.
+ Coincide con 1 o más expresiones.
? Coincide con 0 o 1 fragmentos definidos por la expresión regular anterior, de forma no codiciosa
{norte} Coincide exactamente con n expresiones anteriores.
{n,m} Haga coincidir n a m veces el fragmento definido por la expresión regular anterior, modo codicioso
a|b coincide con a o b
( ) Coincide con una expresión entre paréntesis y también representa un grupo

re.match coincide con un patrón desde el principio de la cadena

re.match intenta hacer coincidir un patrón desde el principio de la cadena . Si la coincidencia no tiene éxito al principio, match() no devuelve ninguno. Resumen: intente utilizar la coincidencia universal, utilice paréntesis para obtener el objetivo coincidente, intente utilizar el modo no codicioso y utilice re.S si hay un carácter de nueva línea.

Coincidencia genérica

import re

content = 'Hello 123 4567 World_This is a Regex Demo'
result = re.match('^Hello.*Demo$', content)
print(result)
print(result.group())
print(result.span())

<re.Match object; span=(0, 41), match='Hello 123 4567 World_This is a Regex Demo'>
Hello 123 4567 World_This is a Regex Demo
(0, 41)

objetivo de coincidencia

import re

content = 'Hello 1234567 World_This is a Regex Demo'
result = re.match('^Hello\s(\d+)\sWorld.*Demo$', content)
print(result)
print(result.group(1))
print(result.span())

<re.Match object; span=(0, 40), match='Hello 1234567 World_This is a Regex Demo'>
1234567
(0, 40)

coincidencia codiciosa

import re

content = 'Hello 1234567 World_This is a Regex Demo'
result = re.match('^He.*(\d+).*Demo$', content)
print(result)
print(result.group(1))

<re.Match object; span=(0, 40), match='Hello 1234567 World_This is a Regex Demo'>
7

coincidencia no codiciosa

import re

content = 'Hello 1234567 World_This is a Regex Demo'
result = re.match('^He.*?(\d+).*Demo$', content)
print(result)
print(result.group(1))

<_sre.SRE_Match object; span=(0, 40), match='Hello 1234567 World_This is a Regex Demo'>
1234567

patrón de coincidencia

import re

content = '''Hello 1234567 World_This
is a Regex Demo
'''
result = re.match('^He.*?(\d+).*?Demo$', content, re.S)	# 可以匹配到换行
print(result.group(1))

1234567

escapar

import re

content = 'price is $5.00'
result = re.match('price is \$5\.00', content)
print(result)

<re.Match object; span=(0, 14), match='price is $5.00'>

re.search escanea toda la cadena y devuelve la primera coincidencia exitosa

re.search escanea toda la cadena y devuelve la primera coincidencia exitosa.

import re
content = 'Extra stings Hello 1234567 World_This is a Regex Demo Extra stings'
result = re.match('Hello.*?(\d+).*?Demo', content)
print(result) # None

# 总结:为匹配方便,能用search就不用match
import re
content = 'Extra stings Hello 1234567 World_This is a Regex Demo Extra stings'
result = re.search('Hello.*?(\d+).*?Demo', content)
print(result)
print(result.group(1))

<_sre.SRE_Match object; span=(13, 53), match='Hello 1234567 World_This is a Regex Demo'>
1234567

re.findall devuelve todas las subcadenas coincidentes en forma de lista

Busque una cadena y devuelva todas las subcadenas coincidentes en forma de lista.

import re

html = '''<div id="songs-list">
    <h2 class="title">经典老歌</h2>
    <p class="introduction">
        经典老歌列表
    </p>
    <ul id="list" class="list-group">
        <li data-view="2">一路上有你</li>
        <li data-view="7">
            <a href="/2.mp3" singer="任贤齐">沧海一声笑</a>
        </li>
        <li data-view="4" class="active">
            <a href="/3.mp3" singer="齐秦">往事随风</a>
        </li>
        <li data-view="6"><a href="/4.mp3" singer="beyond">光辉岁月</a></li>
        <li data-view="5"><a href="/5.mp3" singer="陈慧琳">记事本</a></li>
        <li data-view="5">
            <a href="/6.mp3" singer="邓丽君">但愿人长久</a>
        </li>
    </ul>
</div>'''
results = re.findall('<li.*?>\s*?(<a.*?>)?(\w+)(</a>)?\s*?</li>', html, re.S)
print(results)
for result in results:
    print(result[1])

[('', '一路上有你', ''), ('<a href="/2.mp3" singer="任贤齐">', '沧海一声笑', '</a>'), ('<a href="/3.mp3" singer="齐秦">', '往事随风', '</a>'), ('<a href="/4.mp3" singer="beyond">', '光辉岁月', '</a>'), ('<a href="/5.mp3" singer="陈慧琳">', '记事本', '</a>'), ('<a href="/6.mp3" singer="邓丽君">', '但愿人长久', '</a>')]
一路上有你
沧海一声笑
往事随风
光辉岁月
记事本
但愿人长久

re.sub reemplaza cada subcadena coincidente en la cadena y devuelve la cadena reemplazada.

Devuelve la cadena reemplazada después de reemplazar cada subcadena coincidente en la cadena.

import re

content = 'Extra stings Hello 1234567 World_This is a Regex Demo Extra stings'
content = re.sub('\d+', '', content)
print(content)

# Extra stings Hello  World_This is a Regex Demo Extra stings
import re

content = 'Extra stings Hello 1234567 World_This is a Regex Demo Extra stings'
content = re.sub('(\d+)', r'\1 8910', content)
print(content)

# Extra stings Hello 1234567 8910 World_This is a Regex Demo Extra stings

re.compile compila cadenas regulares en objetos de expresión regular

Compile cadenas regulares en objetos de expresión regular

import re

content = '''Hello 1234567 World_This
is a Regex Demo'''
pattern = re.compile('Hello.*Demo', re.S)
result = re.match(pattern, content)
#result = re.match('Hello.*Demo', content, re.S)
print(result)

# <re.Match object; span=(0, 40), match='Hello 1234567 World_This\nis a Regex Demo'>

Supongo que te gusta

Origin blog.csdn.net/qq_44033208/article/details/132739144
Recomendado
Clasificación