online - python para impacientes expresiones regulares
¿Cómo puedo hacer coincidir el inicio y el final en la expresión regular de Python? (6)
¿Qué hay de no usar una expresión regular en absoluto?
if string.startswith("ftp://") and string.endswith(".jpg"):
¿No crees que esto se lee mejor?
También puede admitir múltiples opciones para el inicio y el final:
if (string.startswith(("ftp://", "http://")) and
string.endswith((".jpg", ".png"))):
Tengo una cadena y quiero hacer coincidir algo al principio y al final con un solo patrón de búsqueda. ¿Cómo se puede hacer esto?
Digamos que tenemos una cadena como:
string = "ftp://www.somewhere.com/over/the/rainbow/image.jpg"
Quiero hacer algo como esto:
re.search("^ftp:// & .jpg$" ,string)
Obviamente, es incorrecto, pero espero que llegue mi punto de vista. es posible?
No seas greedy , usa ^ftp://(.*?)/.jpg$
Quiero extraer todo numérico, incluir int y flotar.
Y funciona para mi.
import re
s = ''[11-09 22:55:41] [INFO ] [ 4560] source_loss: 0.717, target_loss: 1.279,
transfer_loss: 0.001, total_loss: 0.718''
print([float(s) if ''.'' in s else int(s) for s in re.findall(r''-?/d+/.?/d*'', s)])
refs: https://www.tutorialspoint.com/How-to-extract-numbers-from-a-string-in-Python
Tratar
re.search(r''^ftp://.*/.jpg$'' ,string)
Si quieres una búsqueda de expresiones regulares. Tenga en cuenta que tiene que escapar del período porque tiene un significado especial en las expresiones regulares.
re.match
coincidirá con la cadena al principio , en contraste con re.search
:
re.match(r''(ftp|http)://.*/.(jpg|png)$'', s)
Dos cosas a tener en cuenta aquí:
-
r''''
se utiliza para el literal de cadena para que sea trivial tener barras invertidas dentro de la expresión regular -
string
es un módulo estándar, así que elegís
como variable - Si usa una expresión regular más de una vez, puede usar
r = re.compile(...)
para construir la máquina de estados una vez y luego usarr.match(s)
para coincidir con las cadenas
Si lo desea, también puede usar el módulo urlparse
para analizar la URL por usted (aunque todavía necesita extraer la extensión):
>>> allowed_schemes = (''http'', ''ftp'')
>>> allowed_exts = (''png'', ''jpg'')
>>> from urlparse import urlparse
>>> url = urlparse("ftp://www.somewhere.com/over/the/rainbow/image.jpg")
>>> url.scheme in allowed_schemes
True
>>> url.path.rsplit(''.'', 1)[1] in allowed_exts
True
import re
s = "ftp://www.somewhere.com/over/the/rainbow/image.jpg"
print(re.search("^ftp://.*/.jpg$", s).group(0))