Pages in topic:   [1 2] >
necesito ayuda para crear una expresión regular de búsqueda
Thread poster: Angel Llacuna

Angel Llacuna  Identity Verified
Spain
Local time: 03:16
English to Spanish
Jun 12

Necesito crear una expresión regular que busque la segunda aparición de un carácter de tabulación en cada línea de un archivo de texto

 

Rossana Triaca  Identity Verified
Uruguay
Local time: 22:16
Member (2002)
English to Spanish
Prueba Jun 12

Es un poco difícil sin saber para qué es, si la idea es sustituirlo se me ocurrió rápidamente para Notepad++:

Search: (?=\t)(.*)\t
Replace: \1texto

Donde "texto" es por lo que quiero reemplazar el tab. La coincidencia no es exactamente el segundo tab, es más bien todo lo que está entre el primer tab que encuentra en una nueva línea y ese tab, por eso al reemplazar repito lo que encontró ("match newline" tiene que estar desactivado).

Me imagino que debe haber formas más elegantes y sin duda debe ser posible hacer que ese tab sea un match individual, pero probablemente si es para sustituirlo o borrarlo esto funcione.


 

Daniel Frisano
Monaco
Local time: 03:16
Member (2008)
English to Italian
+ ...
Dos preguntas Jun 13

1) ¿Sólo encontrar o también sustituir?

2) Si hay que sustituir, ¿puedes pasarlo a Excel?

[Edited at 2018-06-13 01:24 GMT]


 

Angel Llacuna  Identity Verified
Spain
Local time: 03:16
English to Spanish
TOPIC STARTER
es para hacer búsqueda y sustitución ... Jun 13

el segundo carácter de tabulación de cada línea se sustituirá por un espacio en blanco.
El archivo es un archivo de texto plano , con el que trabajo en Notepad++. En este caso, un glosario al que voy añadiendo entradas.

En la imagen podéis ver un fragmento del archivo, donde aparecen marcados en rojo un par de caracteres de tabulación que deberán sustituirse (son la segunda tabulación en la línea respectiva)



 

Daniel Frisano
Monaco
Local time: 03:16
Member (2008)
English to Italian
+ ...
En Excel Jun 13

Bueno, si se puede pasarlo temporalmente a Excel y de vuelta a Notepad++ sin que ocurran desastres, se puede intentar con lo siguiente:

1) Sustituir todos las tabuladores con un carácter que no se usa nunca, por ejemplo §.

2) Pasarlo a Excel. Si el texto está en la columna A, en la B se pone:

=LEFT(REPLACE(REPLACE(REPLACE(CONCAT(A1;"§§");FIND("§";CONCAT(A1;"§§"));1;"!");FIND("§";REPLACE(CONCAT(A1;"§§");FIND("§";CONCAT(A1;"§§"));1;"!"));1;" ");FIND("!";REPLACE(REPLACE(CONCAT(A1;"§§");FIND("§";CONCAT(A1;"§§"));1;"!");FIND("§";REPLACE(CONCAT(A1;"§§");FIND("§";CONCAT(A1;"§§"));1;"!"));1;" "));1;"§");LEN(A1))

p569gzro6h9xi9mfaddo.jpg

3) Volver a Notepad++ y sustituir todos los § con tabuladores.


 

Angel Llacuna  Identity Verified
Spain
Local time: 03:16
English to Spanish
TOPIC STARTER
gracias Daniel ... Jun 13

quisiera una forma de hacerlo directamente desde dentro de NotePad++

 

Rossana Triaca  Identity Verified
Uruguay
Local time: 22:16
Member (2002)
English to Spanish
... Jun 13

En mi post, donde dice "texto" pones un espacio en blanco y listo (dejando el /1), funciona bien.

 

Christophe Delaunay  Identity Verified
Italy
Local time: 03:16
Spanish to French
+ ...
¡Qué nivel, Daniel! Jun 13

Daniel Frisano wrote:

LEFT(REPLACE(REPLACE(REPLACE(CONCAT(A1;"§§");FIND("§";CONCAT(A1;"§§"));1;"!");FIND("§";REPLACE(CONCAT(A1;"§§");FIND("§";CONCAT(A1;"§§"));1;"!"));1;" ");FIND("!";REPLACE(REPLACE(CONCAT(A1;"§§");FIND("§";CONCAT(A1;"§§"));1;"!");FIND("§";REPLACE(CONCAT(A1;"§§");FIND("§";CONCAT(A1;"§§"));1;"!"));1;" "));1;"§");LEN(A1)) [/quote]


 

Daniel Frisano
Monaco
Local time: 03:16
Member (2008)
English to Italian
+ ...
Explicación Jun 13

Christophe Delaunay wrote:

¡Qué nivel!



Es mucho menos complicado de lo que parece. Funciona así:

xjqabdidiyoef81f71xk.jpg

A1 es el texto original
B1 = CONCAT(A1;"§§") // añade dos § al final para evitar errores
C1 = REPLACE(B1;FIND("§";B1);1;"!") // sustituye el primer § con !
D1 = REPLACE(C1;FIND("§";C1);1;" ") // sustituye el segundo § con un espacio
E1 = REPLACE(D1;FIND("!";D1);1;"§") // vuelve a poner el primer §
F1 = LEFT(E1;LEN(A1)) // quita los dos §§ añadidos al principio

Encajando todas las funciones en una aparece ese monstruo (que nunca sabría escribir de golpe).

Es mucho más elegante la solución de Rossana, sin tanto mareo...


 

Angel Llacuna  Identity Verified
Spain
Local time: 03:16
English to Spanish
TOPIC STARTER
gracias a todos por vuestras aportaciones ... Jun 13

probaré la solución de Rossana y os digo como ha ido.
Saludos desde España.


 

Angel Llacuna  Identity Verified
Spain
Local time: 03:16
English to Spanish
TOPIC STARTER
hola Rossana Jun 15

Rossana Triaca wrote:

Es un poco difícil sin saber para qué es, si la idea es sustituirlo se me ocurrió rápidamente para Notepad++:

Search: (?=\t)(.*)\t
Replace: \1texto

Donde "texto" es por lo que quiero reemplazar el tab. La coincidencia no es exactamente el segundo tab, es más bien todo lo que está entre el primer tab que encuentra en una nueva línea y ese tab, por eso al reemplazar repito lo que encontró ("match newline" tiene que estar desactivado).

Me imagino que debe haber formas más elegantes y sin duda debe ser posible hacer que ese tab sea un match individual, pero probablemente si es para sustituirlo o borrarlo esto funcione.


La expresión de búsqueda sugerida no me encuentra el segundo tab de cada línea, sino que los encuentra todos


.....
.....
.....


 

Rossana Triaca  Identity Verified
Uruguay
Local time: 22:16
Member (2002)
English to Spanish
Otra prueba (creo que por la segunda imagen me doy cuenta de lo que pasa) Jun 15

(\t)(.*?)(\t)
\1\2

(con un espacio después del 2). Igual que el anterior, selecciona lo que está en el medio, pero como después lo copia no debería haber problema.


 

FarkasAndras
Local time: 03:16
English to Hungarian
+ ...
No Jun 15

Rossana Triaca wrote:

(\t)(.*?)(\t)
\1\2

(con un espacio después del 2). Igual que el anterior, selecciona lo que está en el medio, pero como después lo copia no debería haber problema.


Esto también encuentra todos los tabs si hay varios en la línea.

Así es mejor:
^([^\t]*\t[^\t]*)\t
reemplazar con:
\1[lo que quieras]

Explicación:
^ - inicio de línea
() - memorizar contenido
[^\t]* cualquier número de carácteres que no sean tab


 

Angel Llacuna  Identity Verified
Spain
Local time: 03:16
English to Spanish
TOPIC STARTER
gracias Rossana y Farkas por vuestras sugerencias de expresión de búsqueda ... Jun 15

pero he comprobado que no son efectivas para seleccionar solamente la segunda tabulación de cada línea. En lugar de ello, se seleccionan porciones mucho mayores del texto

 

Rossana Triaca  Identity Verified
Uruguay
Local time: 22:16
Member (2002)
English to Spanish
Haz una copia del archivo y prueba la sustitución Jun 15

¿Probaste la sustitución? Ninguna de las soluciones selecciona solo lo que quieres, pero sí hacen lo que necesitas porque con regex se pueden conservar los matches, es decir, estás copiando y pegando en los resultados lo que encontró, así que no te altera el texto que no quieres, solo el segundo tab.

Es más fácil que pruebas las sustituciones que te dimos y veas cómo funcionan que explicarlo...


 
Pages in topic:   [1 2] >


To report site rules violations or get help, contact a site moderator:


You can also contact site staff by submitting a support request »

necesito ayuda para crear una expresión regular de búsqueda

Advanced search






Déjà Vu X3
Try it, Love it

Find out why Déjà Vu is today the most flexible, customizable and user-friendly tool on the market. See the brand new features in action: *Completely redesigned user interface *Live Preview *Inline spell checking *Inline

More info »
TM-Town
Manage your TMs and Terms ... and boost your translation business

Are you ready for something fresh in the industry? TM-Town is a unique new site for you -- the freelance translator -- to store, manage and share translation memories (TMs) and glossaries...and potentially meet new clients on the basis of your prior work.

More info »



Forums
  • All of ProZ.com
  • Term search
  • Jobs
  • Forums
  • Multiple search