Regex: busque todas las palabras separadas por signos + - = (Buscar y reemplazar)

Regex: busque todas las palabras separadas por signos + - = (Buscar y reemplazar)

Tengo este escenario:

data-cycle-center-horz=true other words

data-cycle-caption=".custom-captions" other words

data-cycle-caption-template="{{slideNum}} other words

before words .data-cycle-caption-template="{{slideNum}} other words

.data-cycle-caption-template="{{slideNum}} other words

Entonces necesito encontrar todas las palabras separadas por signos.- = . "{

Hice una expresión regular para NOTAPAD++ para buscar y eliminar aquellas palabras que tienen signos antes y después (la cadena completa) sin las otras palabras, pero no muy bien:

BUSCAR: (?!\w+[-."={])

REEMPLAZAR: (dejar vacío)

El resultado esperado debería ser:

other words

other words

other words

before words other words

other words

Respuesta1

  • Ctrl+H
  • Encontrar que:(?:^|[+=."{}-]+)(?:\w+[+=."{}-]+)+\h*
  • Reemplazar con:LEAVE EMPTY
  • comprobar Envolver alrededor
  • comprobar expresión regular
  • Replace all

Explicación:

(?:             # start non capture group
  ^             # beginning of line
 |              # OR
  [+=."{}-]+    # 1 or more + = . " { } -
)               # end group
(?:             # start non capture group
  \w+           # 1 or more word character
  [+=."{}-]+    # 1 or more + = . " { } -
)+              # end group, may appear 1 or more times
\h*             # 0 or more horizontal spaces

La captura de pantalla:

ingrese la descripción de la imagen aquí

Respuesta2

Esto está escrito en Python. Carga los datos de prueba desde un archivo "data.txt" en el mismo directorio.

Instalar Python

import os, re

path = "./data.txt"
if os.path.isfile(path): #use local leader file
    oFile = open(path)
    strFile = oFile.read() #get old leaders
    oFile.close()
else:
    print("File Not Found")

def replace(line):
    for i in line:
        if ( i == '-' or i == '=' or i == '.' or i == '"' or i == '{' or i == '}'):
            line = line.replace(i,"\n")#Delete \n and replace it with xyz to see
    return line

lines = strFile.split("\n")
for line in lines:

    answer = replace(line)

    print(answer)

centro de ciclo de datos horz verdadero título del ciclo de datos subtítulos personalizados plantilla de título del ciclo de datos slideNum

Respuesta3

Lo que leo de tu pregunta es que básicamente quieres hacer coincidir todas las palabras, pero no los caracteres especiales que las separan, ¿verdad?

[^-=."{}\r\n]+debería funcionar. Coincidirá con todo lo que no sean caracteres especiales - = . "{o un salto de línea.

Puede crear y probar expresiones regulares con una herramienta en línea comoexpresión regular101

Actualizar
La siguiente expresión regular elimina las palabras que usted describió, así como los espacios en blanco finales:([^\s]+[-=."{}\r\n][^\s]+\s*)+

Lo probé con éxito en tu ejemplo:

Antes:

data-cycle-center-horz=true other words

data-cycle-caption=".custom-captions"  other words

data-cycle-caption-template="{{slideNum}}  other words

before words .data-cycle-caption-template="{{slideNum}}  other words

.data-cycle-caption-template="{{slideNum}}  other words

Después:

other words

other words

other words

before words other words

other words

información relacionada