<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://manuais.iessanclemente.net/index.php?action=history&amp;feed=atom&amp;title=Python_-_Expresiones_regulares</id>
	<title>Python - Expresiones regulares - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://manuais.iessanclemente.net/index.php?action=history&amp;feed=atom&amp;title=Python_-_Expresiones_regulares"/>
	<link rel="alternate" type="text/html" href="https://manuais.iessanclemente.net/index.php?title=Python_-_Expresiones_regulares&amp;action=history"/>
	<updated>2026-10-23T22:08:23Z</updated>
	<subtitle>Historial de revisiones de esta página en la wiki</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://manuais.iessanclemente.net/index.php?title=Python_-_Expresiones_regulares&amp;diff=70123&amp;oldid=prev</id>
		<title>Vieites en 22:40 3 nov 2022</title>
		<link rel="alternate" type="text/html" href="https://manuais.iessanclemente.net/index.php?title=Python_-_Expresiones_regulares&amp;diff=70123&amp;oldid=prev"/>
		<updated>2022-11-03T22:40:55Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Como en todos los lenguajes, en Python también podemos utilizar Expresiones Regulares para crear patrones que nos permitan filtrar texto.&lt;br /&gt;
&lt;br /&gt;
Para ello, en Python tenemos el módulo [https://docs.python.org/es/3/library/re.html re]. Veamos una serie de ejemplos prácticos sencillos:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Comprobar si en un texto hay símbolos o espacios&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
texto = input(&amp;quot;Introduce texto : &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
patronSimbol = re.compile(&amp;#039;\W&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
if patronSimbol.search(texto):&lt;br /&gt;
    print(&amp;quot;Sí hay símbolos&amp;quot;)&lt;br /&gt;
else:&lt;br /&gt;
    print(&amp;quot;No hay símbolos&amp;quot;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:* &amp;#039;&amp;#039;&amp;#039;re.compile(pattern)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
:: Compila un patrón de expresión regular en un objeto de expresión regular, que puede ser usado para las coincidencias usando &amp;#039;&amp;#039;&amp;#039;match()&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;search()&amp;#039;&amp;#039;&amp;#039; y otros métodos, descritos más adelante.&lt;br /&gt;
:* &amp;#039;&amp;#039;&amp;#039;Pattern.search(string[, pos[, endpos]])&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
:: Escanea a través de la &amp;#039;&amp;#039;string&amp;#039;&amp;#039; buscando la primera ubicación donde esta expresión regular produce una coincidencia, y retorna un objeto &amp;#039;&amp;#039;match&amp;#039;&amp;#039; correspondiente. Retorna &amp;#039;&amp;#039;None&amp;#039;&amp;#039; si ninguna posición en la cadena coincide con el patrón; notar que esto es diferente a encontrar una coincidencia de longitud cero en algún punto de la cadena.&lt;br /&gt;
:: El segundo parámetro opcional &amp;#039;&amp;#039;pos&amp;#039;&amp;#039; proporciona un índice en la cadena donde la búsqueda debe comenzar; por defecto es 0. &lt;br /&gt;
:: El parámetro opcional &amp;#039;&amp;#039;endpos&amp;#039;&amp;#039; limita hasta dónde se buscará la cadena; será como si la cadena fuera de &amp;#039;&amp;#039;endpos&amp;#039;&amp;#039; caracteres de largo, por lo que sólo se buscará una coincidencia entre los caracteres de &amp;#039;&amp;#039;pos&amp;#039;&amp;#039; a &amp;#039;&amp;#039;endpos - 1&amp;#039;&amp;#039;. Si &amp;#039;&amp;#039;endpos&amp;#039;&amp;#039; es menor que &amp;#039;&amp;#039;pos&amp;#039;&amp;#039;, no se encontrará ninguna coincidencia.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Buscar en un texto todas las IPsv4 y las MACs existentes :&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
texto = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
1: lo: &amp;lt;LOOPBACK,UP,LOWER_UP&amp;gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000&lt;br /&gt;
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00&lt;br /&gt;
    inet 127.0.0.1/8 scope host lo&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
    inet6 ::1/128 scope host &lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
2: enp0s31f6: &amp;lt;NO-CARRIER,BROADCAST,MULTICAST,UP&amp;gt; mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000&lt;br /&gt;
    link/ether 88:28:fd:c3:6f:c2 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
3: wlp0s20f3: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc noqueue state UP group default qlen 1000&lt;br /&gt;
    link/ether ce:db:ac:da:84:28 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
    inet 192.168.1.15/24 brd 192.168.1.255 scope global dynamic noprefixroute wlp0s20f3&lt;br /&gt;
       valid_lft 85322sec preferred_lft 85322sec&lt;br /&gt;
    inet6 fe80::a8af:8041:769d:60f1/64 scope link noprefixroute &lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
patronIP = re.compile(&amp;#039;(?:[0-9]{1,3}\.){3}[0-9]{1,3}&amp;#039;)&lt;br /&gt;
patronMAC = re.compile(&amp;#039;(?:[0-9A-F]{2}[:-]){5}[0-9A-F]{2}&amp;#039;, re.IGNORECASE)&lt;br /&gt;
&lt;br /&gt;
listaIPs = patronIP.findall(texto)&lt;br /&gt;
listaMACs = patronMAC.findall(texto)&lt;br /&gt;
&lt;br /&gt;
print(listaIPs)&lt;br /&gt;
print(listaMACs)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:* &amp;#039;&amp;#039;&amp;#039;Pattern.findall(string[, pos[, endpos]])&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
:: Retorna todas las coincidencias no superpuestas de &amp;#039;&amp;#039;pattern&amp;#039;&amp;#039; en &amp;#039;&amp;#039;string&amp;#039;&amp;#039;, como una lista de &amp;#039;&amp;#039;strings&amp;#039;&amp;#039; o tuplas. El &amp;#039;&amp;#039;string&amp;#039;&amp;#039; se escanea de izquierda a derecha y las coincidencias se retornan en el orden en que se encuentran. Las coincidencias vacías se incluyen en el resultado.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[Python3|Volver]]&lt;/div&gt;</summary>
		<author><name>Vieites</name></author>
	</entry>
</feed>