$1,$2,... es el formato estándar para hacer referencia a un token de la expresión regular con el que se ha encontrado la coincidencia.
Pero en el editor notepad++, si queremos buscar/reemplazar, usando expresiones regulares, debemos usar el formato \1,\2,... en vez de $1,$2,...
Por ejemplo, tengo las siguientes cadenas:
bbb545
y me quiero quedar sólo con la parte de los números de cada cadena.
Entonces invoco el menú buscar/reemplazar de notepad++ (ctrl+h directamente, o bien, ctrl+f y pestaña 'reemplazar' o 'replace'):
reemplazar: \1
Y obtengo:
545
Al coincidir la expresión regular, las partes rodeadas por (), se pueden referenciar por identificadores, cuyo índice va en el orden de ocurrencia de dichos bloques, de izquierda a derecha y en los anidamientos de fuera hacia dentro.
Buenas herramientas para probar expresiones regulares online y offline.
Online:
(Aplicaciones web)Offline:
(Aplicaciones para descargar)- gskinner.com (aplicación Flash)
Comprobar expresiones regulares on line español:
ResponderEliminarhttp://regexpre.orgfree.com/
FrAnCzOrR, gracias por la recomendación. Sencillo, correcto, pero poco útil si se le va a dar un uso profesional e intenso. Pudiendo utilizar un tester de expresiones regulares, porque utilizar un validador? Los tester por lo menos te permiten comprobar si los match se están haciendo correctamente y como tú te esperas.
ResponderEliminarEn esa utilidad que recomiendas me falta:
1- La ventana para el valor a pro-B-ar debería poder redimensionarse también y estaría bien que por defecto ya fuera grande. Mejor que ambas sean lo suficientemente grandes como para no recurrir a la necesidad de redimensionarlas, es una impresión bastante molesta que puede quitarle usuarios.
2-Quiero ver destacadas las partes del contenido a probar que hacen match, y en tiempo real, no quiero tener que pulsar cada 2 por tres al botón.
Todo esto me lo ofrecen las herramientas que he recomendado y que cuando he necesitado he utilizado intensamente. Sobre todo la de gskinner.com
No es nada personal, es más aún te agradezco muchísimo que hayas recomendado esta utilidad, sólo quería comentar aspectos que veo vitales en este tipo de herramientas que de vez en cuando uso profesionalmente. Y estaría encantado de oir consejos y críticas,... lo que sea que nos sea útil a todos, para trabajar mejor, más cómodos, más rápido,...
Muchas gracias FrAnCzOrR!
Hola ikon24 hice unos cambios de acuerdo a tus observaciones: http://regexpre.orgfree.com/
ResponderEliminarHola,
ResponderEliminarVeréis, tengo un fichero txt muy largo dentro del cual hay direcciones de lugares que necesito que necesito.
He visto que entre direccion y dirección hay 6 saltos de línea. Por lo tanto solo necesito suprimir el texto sobrante que hay entre dirección y dirección para que el txt me quede limpio del texto sobrante.
O sea, el formato que tengo ahora mismo es este:
Dirección
Texto inútil
Dirección
Texto inútil
Dirección
Texto inútil
(...)
Entonces, la dirección ocupa solo una línea. El texto inútil ocupa 6 líneas.
Me podríais decir como sería la expresión que me permita suprimir el texto que no quiero?
Gracias y un saludo
Hola!
ResponderEliminarQuisiera hacerle una consulta!
Tengo un txt con un formato como este:
1 DIRECCIÓN | CIUDAD
2 TEXTO INÚTIL
3 TEXTO INÚTIL
4 TEXTO INÚTIL
5 TEXTO INÚTIL
6 TEXTO INÚTIL
7 TEXTO INÚTIL
8 DIRECCIÓN | CIUDAD
9 TEXTO INÚTIL
10 TEXTO INÚTIL
11 TEXTO INÚTIL
12 TEXTO INÚTIL
13 TEXTO INÚTIL
14 TEXTO INÚTIL
15 DIRECCIÓN | CIUDAD
(...)
Para clarificar he enumerado cada fila.
Yo deseo eliminar todas las filas inútiles (donde hay texto inútil) y juntar todas las filas útiles (o sea, las de las direcciones).
Si se fija, se repite que hay 6 filas inútiles y una fila útil.
Como podría hacerlo con notepad++ usando buscar y reemplazar?
Muchas gracias de antemano y un saludo!
Por de pronto, con notepad++ no se me ocurre como hacerlo rápidamente. Supongo que hay miles de líneas, porque si no son tantas, creo que sería más fácil borrarlas manualmente.
ResponderEliminarPor otro lado, para éste tipo de tareas recomiendo una herramienta maravillosa "sed", disponible en todas las shell que se precien. En windows la podrías tener disponible instalando "Cygwin".
Aquí te dejo un ejemplo de uso de esa herramienta para hacer lo que intentas hacer.
http://linuxcommando.blogspot.com/2008/04/use-sed-or-perl-to-extract-every-nth.html
Yo también estaría encantado de saber cómo se podría hacer fácilmente en notepad++.
Ahora mismo he descubierto como se podría hacer algo más automático en notepad++.
ResponderEliminarGrabar una macro:
Macro->Comenzar grabación
1 - Borrar seis líneas (ctrl+L x 6)
2- Bajar el cursor a la siguiente línea (tecla flecha para abajo).
Macro->Parar grabación
Si hay N líneas útiles, habrá que reproducir N veces la macro (pulsando ctrl+shift+P).
muchas gracias ikon24, funciona a la perfeccion!
ResponderEliminarGenial, no sabia para que funcionaba la macro, muchas gracias!!
ResponderEliminarhola, quiero hacer una expresión regular para este caso:
ResponderEliminarvalor a encontrar: fontName="{el_valor_que_sea}"
reemplazo: (vacio)
como podría hacerlo con notepad++?
Entiendo que quieres borrar toda cadena que sea de la forma fontName="{el_valor_que_sea}"
ResponderEliminarYo pondría:
valor a encontrar: fontName="{[^"]*}"
reemplazo: (vacío)
[^"] - significa cualquier carácter distinto a ".
(no te olvides de marcar el tipo de búsqueda "expresión regular" abajo en el cuadro de búsqueda y reemplazo. Y prueba esa expresión en la pestaña de sólo búsqueda para ver que efectivamente te selecciona los fragmentos que quieres ;)).
si quiero insertar una linea o un enter al final de cada linea en el registro
ResponderEliminarpodria ayudarme estoy haciendo una base de datos telefonica de 11 caracteres pero quisiera que cuando traigo de otro lado que viene dos numeros juntos me los pase a la siguiente columna
ResponderEliminarBusca con la expresión 2 números concatenados (captura cada uno de ellos en un grupo '()', a los que podrás hacer referencia en la expresión de reemplazo con /1 y /2), y al reemplazar separas ambos números por un salto de línea(\n): /1\n/2
EliminarHola Jhon,
ResponderEliminarHe entendido que podrías tener líneas de la forma:
abcdefghi12 (9caracteres y 2 números al final)
que quieres transformar a:
abcdefghi
12
Para esa transformación podrías usar el replace de notepad++ de la siguiente manera:
Find what:
(.{9})(\d{2})
Replace with:
\1\n\2
\n es el caracter de salto de línea, con lo que estas diciéndole: coloca el primer grupo que corresponde a los 9 primeros caracteres, luego un salto de línea y luego el grupo formado por dos dígitos, ya en la nueva línea, porque antes colocaste el salto de línea (\n). Jugando con esto seguro que obtienes fácil lo que andabas buscando ;)
Hola ikon24
ResponderEliminarTengo una lista muy grande de números telefónicos
521008050299
521111111111
521111199272
521234567890
521290197952
521290678852
521290799452
521290864152
521291035352
521291175252
.....
necesito quitarle los 2 primeros dígitos que el la lada (52) como veras a veces aparecen el "52" al final o en medio del número telefonico así que si ocupo la función remplazar en notepad ++ también me remplaza esos "52" que parecen al final o en medio.
Hay alguna forma de quitar esos primeros dos dígitos en notepad++
Nota no lo hago en Excel con la función texto en columnas porque la lista es de más de 3 millones y en Excel no me permite poner tantas
Claro que la hay. Fácil. Usa la expresión "52(\d+)" para buscar y "\1", para reemplazar. Te dejará en cada línea que empieza por "52", el grupo de dígitos que seguían a ese "52".
EliminarBuscar qué: 52(\d+)
Reemplazar con: \1
Espero que te sirva.
Un saludo!
Como puedo reemplazar un texto por el mismo texto con una coletilla.
ResponderEliminarEjemplo: texto a buscar: "hola" reemplazarlo por "hola_1"
Gracias
Para éste caso tan simple, no veo sentido en utilizar expresiones regulares. Sería tan sencillo como:
EliminarBuscar: "hola"
Reemplazar con: "hola_1"
Si quieres capturar el texto 'hola' y hacer referencia a él en la expresión de reemplazo:
Buscar: "(hola)"
Reemplazar con: "\1_1"
\1 contiene 'hola' capturado por el grupo () en la expresión de búsqueda.
Como puedo reemplazar un texto por el mismo pero con coletilla:
ResponderEliminarEjemplo: buscar "hola" y reemplazarlo por "hola_1"
El texto a buscar iria cambiando.
Gracias
1) Con tu ejemplo, "texto":
Eliminarbuscar: (texto)
reemplazar: \1_1
Para obtener: texto_1
2) Si quieres buscar "algo"
buscar: (algo)
reemplazar: a_\1_bc
Para obtener: a_algo_bc
Explicación:
\1 hace referencia a lo capturado por la expresión del 1er grupo de izqda a derecha,y de fuera hacia dentro, delimitado por (), en la expresión que pongas en "buscar".
No te olvides de marcar que usas expresiones regulares en el cuadro de diálogo de búsqueda y reemplazo del notepad++, para que entienda que las expresiones que usas en 'buscar' y/o 'reemplazar' contienen expresiones regulares.
Hola,
ResponderEliminarpor favor, me podrias ayudar.
Tengo una lista de mas de 100 numeros en la forma:
'111111',
'222222',
'333333',
'444444',
'555555',
'666666',
'777777',
y querria ponerlos en columnas de 3 numeros, por ej:
'111111','222222','333333',
'444444','555555','666666',
'777777',
¿se podria realizar utilizando expresiones regulares con el notepal?
Gracias.
En 'buscar', define una expresión que represente tres números, capturados por sendos grupos,
Eliminarseparados por 2 saltos de línea.Por ejemplo: ([']\d{6}['],)\n([']\d{6}['],)\n([']\d{6}['],)\n
En 'reemplazar', pones los 3 números seguidos: \1\2\3
Hola, una consulta
ResponderEliminarNecesito borrar por ejemplo:
Utilizo <nombre=(\w+)
pero solo encuentra la primer palabra, podrias ayudarme con una expresion que pueda borrar el nombre completo, o como hacer expresiones usando delimitadores.
Agradezco tu apoyo
Pon un ejemplo por favor.
EliminarLa expresión \w+ encaja con una cadena de letras sin espacios. Si tu nombre contiene espacios y sólo letras, prueba con:
\w[\w\s]+\w
Ésta expresión encaja con cualquier cadena que comience con una letra,seguida por letras o espacios y que acaba en una letra.
Hola, como estas?
ResponderEliminarQuisiera saber si me puedes ayudar con lo siguiente,
Tengo muchas lineas como estas:
Deactivate= 15/07/2015
Deactivate= 01/03/2014
Deactivate= 02/01/2017
Deactivate= 31/07/2015
Deactivate= 08/10/2015
Deactivate= 17/05/2018
Todas tienen diferentes fechas y necesito que todas tengan la misma, por ejemplo 01/01/2020 usando el Notepad+++
Habia pensado en algo asi (\w+)(.)(\s)(\d+)(.)(\d+)(.)(\d+)\ pero no se me da muy bien este tema.
Gracias!
Captura las fechas con una expresión por ejemplo:
Eliminarfind: \d{2}\/\d{2}\/\d{4}
replace: 01/01/2020