Expresión regular:
Herramienta de prueba en línea de expresiones regulares: https://regex101.com/
La Enciclopedia Baidu explica que las expresiones regulares son una fórmula lógica para las operaciones con cadenas .
Podemos entender las expresiones regulares como una regla, una regla establecida por nosotros mismos, y dejar que la computadora encuentre la cadena que necesita de acuerdo con esta regla. Pero cómo se formula esta regla, por supuesto que no se puede hacer a ciegas, y decirle a la computadora: "¡Encuéntrame todas las oraciones (cadenas) que contienen a Andy Lau en este artículo!" Por supuesto que la computadora no entiende , por lo tanto, vamos a explicar algunos símbolos a continuación, permitirle configurar expresiones regulares correctamente, configurar reglas y dejar que la computadora lo ayude a encontrar los caracteres que desea.
Las aplicaciones más comunes de las expresiones regulares se encuentran al final del texto.
Uso básico
- ?: indica que el carácter que precede a ? debe aparecer 0 o una vez. ¿Simplemente pon? Los caracteres anteriores son opcionales . Por ejemplo, ingresa una expresión regular té? , entonces la computadora encontrará cadenas como te y tel.
- *: Indica que el carácter anterior debe aparecer 0 o más veces. Por ejemplo, si ingresa una expresión regular ab*c, la computadora encontrará cadenas como ac, abc y abbbbbc.
- +: indica que el carácter que precede a + debe aparecer más de una vez. Por ejemplo, si ingresa una expresión regular ab+c, la computadora encontrará cadenas como abc y abbbbc.
- {}: Coincidencia exacta: Coincide tantas veces como quieras. Por ejemplo, si ingresa una expresión regular ab{6}c, la computadora encontrará una cadena como abbbbbc. Ingresa una expresión regular ab{2,6}c, luego la computadora encontrará cadenas como abbc, abbbc, abbbbc, abbbbbc, abbbbbc. ab{2,}c significa que b aparece más de dos veces.
Las reglas anteriores de calificador único han terminado, si desea que la cadena aparezca un cierto número de veces, es suficiente encerrarla entre ( ). Por ejemplo (ab)+c, se encontrarán las cadenas que cumplen las reglas como ababababc en el artículo.
uso intermedio
Operador OR: |, como (bebé|mamá), el artículo encontrará un bebé o una mamá.
Clase de carácter: [], puede coincidir con una cadena compuesta de caracteres en el cuadro. Por ejemplo, si se formula la expresión regular [alo]+, entonces se puede encontrar (coincidir) afsgsglo, porque alo está incluido en afsgsglo. La diferencia con respecto a () es que no habla del orden, siempre que exista. Ejemplo común: [a-zA-Z0-9]+.
Sin operador: ^, que generalmente se coloca antes de la expresión, lo que indica que todos los caracteres que no sean ellos pueden coincidir. Por ejemplo, no puede ver letras mayúsculas por naturaleza y se siente mal cuando las ve, puede ingresar la expresión regular [ ^AZ]+.
Metacaracteres:
Numeración | Ejemplo | ilustrar |
---|---|---|
1 | . | coincide con cualquier carácter excepto nueva línea |
2 | \d | Números de coincidencia:[0-9] |
3 | \D | Coincidir con no dígitos:[^0-9] |
4 | \s | Coincide con los caracteres de espacio en blanco:[\t\r\n\f] |
5 | \S | Coincidir con espacios no en blanco:[^\t\r\n\f] |
6 | \w | Coincidencia de caracteres de una sola palabra:[A-Za-z0-9_] |
7 | \W | Coincidencia de caracteres que no son palabras:[ ^A-Za-z0-9_] |
Hacer coincidir el comienzo de la línea, como a^, solo puede encontrar la cadena con un que aparece al comienzo de la línea. Tales como aff.
Los finales de línea coincidentes, como a$, solo pueden encontrar cadenas con a al final de la línea. Como llla.
Uso avanzado:
Emparejamiento codicioso y perezoso:
El emparejamiento codicioso es emparejar tantos como sea posible. La coincidencia perezosa es coincidir lo menos posible.
si tu quieres
<div><span>hello world</span></div>
Haga coincidir las etiquetas div y span.
Inconscientemente queremos usar <.+>, siempre que haya algo en <>, coincidirá.
Pero el resultado final es:
共找到 1 处匹配:
<div><span>hello world</span></div>
Convertimos la coincidencia codiciosa en coincidencia perezosa y cambiamos la expresión regular a <.+?>, el resultado final es:
共找到 4 处匹配:
<div>
<span>
</span>
</div>
Se hace.
Aplicaciones comunes
Expresión regular para juzgar el código python de la contraseña:
import re
lower = re.compile('[a-z]')
upper = re.compile('[A-Z]')
digit = re.compile('[0-9]')
wrong = re.compile('[^a-zA-Z0-9]')
while True:
password = input('请输入大于8位的包含大小写字母和数字的密码:')
if len(password) < 8:
print('输入的密码小于8位')
elif wrong.search(password) != None:
print('包含无效字符')
else:
if lower.search(password) == None:
print('未包含小写字母')
elif upper.search(password) == None:
print('未包含大写字母')
elif digit.search(password) == None:
print('未包含数字')
else:
print('输入成功')
break