Sidor om ämnet: [1 2] > | necesito ayuda para crear una expresión regular de búsqueda Trådens avsändare: Angel Llacuna
|
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 | | |
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... See more 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. ▲ Collapse | | | Daniel Frisano Italien Local time: 15:13 Medlem (2008) Engelska till Italienska + ... Dos preguntas | Jun 13, 2018 |
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] | | | es para hacer búsqueda y sustitución ... | Jun 13, 2018 |
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)
... See more 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)
 ▲ Collapse | |
|
|
Daniel Frisano Italien Local time: 15:13 Medlem (2008) Engelska till Italienska + ...
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;" ");... See more 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))

3) Volver a Notepad++ y sustituir todos los § con tabuladores. ▲ Collapse | | | gracias Daniel ... | Jun 13, 2018 |
quisiera una forma de hacerlo directamente desde dentro de NotePad++ | | |
En mi post, donde dice "texto" pones un espacio en blanco y listo (dejando el /1), funciona bien. | | | Christophe Delaunay (X) Frankrike Local time: 15:13 Spanska till Franska + ... ¡Qué nivel, Daniel! | Jun 13, 2018 |
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 Italien Local time: 15:13 Medlem (2008) Engelska till Italienska + ...
Christophe Delaunay wrote:
¡Qué nivel!
Es mucho menos complicado de lo que parece. Funciona así:

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... | | | gracias a todos por vuestras aportaciones ... | Jun 13, 2018 |
probaré la solución de Rossana y os digo como ha ido.
Saludos desde España. | | | hola Rossana | Jun 15, 2018 |
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

.....
.....
.....
 | | | Otra prueba (creo que por la segunda imagen me doy cuenta de lo que pasa) | Jun 15, 2018 |
(\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. | |
|
|
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 | | | gracias Rossana y Farkas por vuestras sugerencias de expresión de búsqueda ... | Jun 15, 2018 |
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 | | | Haz una copia del archivo y prueba la sustitución | Jun 15, 2018 |
¿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... | | | Sidor om ämnet: [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 Protemos translation business management system |
---|
Create your account in minutes, and start working! 3-month trial for agencies, and free for freelancers!
The system lets you keep client/vendor database, with contacts and rates, manage projects and assign jobs to vendors, issue invoices, track payments, store and manage project files, generate business reports on turnover profit per client/manager etc.
More info » |
| Wordfast Pro |
---|
Translation Memory Software for Any Platform
Exclusive discount for ProZ.com users!
Save over 13% when purchasing Wordfast Pro through ProZ.com. Wordfast is the world's #1 provider of platform-independent Translation Memory software. Consistently ranked the most user-friendly and highest value
Buy now! » |
|
| | | | X Sign in to your ProZ.com account... | | | | | |