Buscar y reemplazar texto entre ^ y ~ en Notepad ++


22

Tengo un archivo de texto grande donde quiero eliminar todo el texto entre el símbolo ^ y el símbolo ~. Esto también debe funcionar entre líneas.

Traté de hacer una búsqueda y reemplazo regular usando ^*~en el cuadro Buscar y nada en el cuadro Reemplazar, pero encontró 0 resultados.

Respuestas:


24

Esto no es posible con una búsqueda y reemplazo regular . Si usa Notepad ++ 6, puede aprovechar el nuevo motor regex que admite PCRE ( fuente ).

Presione Ctrl+ Hpara abrir el cuadro de diálogo Buscar y reemplazar y realice la siguiente acción:

Find what:          \^.*?~
Replace with:       
Wrap around:        checked
Regular expression: selected
. matches newline:  checked

Ahora presione Alt+ Apara reemplazar todas las ocurrencias.

La expresión regular en Buscar lo que se compone de la siguiente manera:

  • \^es un literal ^ .
  • .*? es la menor cantidad de caracteres que permite que la expresión regular coincida.
  • ~es un literal ~ .

3
si cambia. *? ~ a [^ ~] * ~ entonces debería funcionar sin requerir / usar PCRE.
barlop

1
@barlop: Tomé Buscar y reemplazar regularmente como modo de búsqueda: Normal , no Buscar y reemplazar usando expresiones regulares. Eso podría haber sido un malentendido. En cualquier caso, si no recuerdo mal, las versiones anteriores a la 6 no admitían patrones de varias líneas.
Dennis

El .*?patrón me funcionó para buscar entre caracteres de ;y <. Entonces, la búsqueda es ENCONTRAR ;.*?<REEMPLAZAR ;con las opciones seleccionadas para Regular expressiony. matches new line
SherlockSpreadsheets

8

Querrás buscar \^.*?~y asegurarte . coincide nueva línea está habilitada:

ingrese la descripción de la imagen aquí

Esto se debe a que ^tiene un significado especial, coincide con el comienzo de una línea. Por lo tanto, tenemos que escapar con una barra invertida \^.

Escribir ^*coincidiría con "cualquier número de inicio de línea en una fila". .*coincide con "cualquier carácter", pero por defecto no coincide con las nuevas líneas.


2
Tenga cuidado con el comportamiento codicioso de la expresión regular. Si hay varios ~caracteres (o es decir, múltiples coincidencias), esto coincidirá con el primero ^hasta el último ~.
heavyd

@heavyd <question> ¿Estás seguro? </question>. Él ha usado *?que no es codicioso, es perezoso .*?~, nunca coincidirá con más de uno ~. Entonces está bien.
barlop

@barlop: Comentó poco después de que respondiera. Fue una edición ninja.
Der Hochstapler

2

Intente usar esta expresión regular en la sección de búsqueda \^[^~]*~ para reemplazar todo entre ^ y ~ inclusive.


y en exclusiva, supongo que eso requiere PCRE, luego haga algo (? <= ^) [^ ~] * (? = ~) No tengo n ++ para probarlo, pero si eso falla, intente cambiar (? <= ^ ) a (? <= \ ^)
barlop

Para exclusivamente, simplemente reemplace con ^~.
Dennis

@ Dennis quiero decir si quiere reemplazar todo entre el ^ y ~ pero sin incluir el ^ y ~
barlop

1
¿No es eso lo que se obtiene si se reemplaza \^[^~]*~con ^~?
Dennis

@ Dennis, oh, ya veo lo que quieres decir, buen punto.
barlop

0

Tuve un requisito de reemplazo similar ENTRE caracteres iniciales y finales. Esto vino del correo electrónico de Outlook; cientos de miembros y solo quería los nombres de las personas con todo eliminado entre <RemoveTextHere> .

Original

First1 Last1 <First1.Last1@email.com>; First2 Last2 <First2.Last2@email.com>; First3 Last3 <First3.Last3@email.com>; First4 Last4 <First4.Last4@email.com>;

Dennis estaba cerca de mi solución, Find what: \^.*?~pero tuve que cambiar mis caracteres literales y Find what: \<.*?>luego tuve que eliminar la primera barra Find what: <.*?>.

Actualizado Find what: <.*?> ; Reemplazar vacío.

First1 Last1 ; First2 Last2 ; First3 Last3 ; First4 Last4

_ _

Caracteres especiales : *, $, \, +, ^, (y ), [, ], {y}

Jerry Jeremiah describe los caracteres especiales aquí /programming/37742519/notepad-wildcard .


Eso no responde la pregunta.
Toto
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.