Regex: Encontre todas as palavras separadas por sinais + - = (Pesquisar e Substituir)

Regex: Encontre todas as palavras separadas por sinais + - = (Pesquisar e Substituir)

Eu tenho este cenário:

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

Então preciso encontrar todas as palavras separadas por sinais- = . "{

Fiz uma regex para o NOTEPAD++ para pesquisar e deletar aquelas palavras que possuem sinais antes e depois (a string inteira) sem as outras palavras, mas não muito bom:

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

SUBSTITUIR: (deixe em branco)

O resultado esperado deve ser:

other words

other words

other words

before words other words

other words

Responder1

  • Ctrl+H
  • Encontre o que:(?:^|[+=."{}-]+)(?:\w+[+=."{}-]+)+\h*
  • Substituir com:LEAVE EMPTY
  • confira Envolver
  • verifique expressão regular
  • Replace all

Explicação:

(?:             # 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

Captura de tela:

insira a descrição da imagem aqui

Responder2

Isso está escrito em Python. Ele carrega seus dados de teste de um arquivo "data.txt" no mesmo diretório

Instale 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 dados horz legenda do ciclo de dados verdadeiro legendas personalizadas modelo de legenda do ciclo de dados slideNum

Responder3

O que estou lendo na sua pergunta é que você deseja basicamente combinar todas as palavras, mas não os caracteres especiais de separação, certo?

[^-=."{}\r\n]+deve fazer o truque. Ele corresponderá a tudo que não seja seus caracteres especiais - = . "{ou uma quebra de linha.

Você pode construir e testar regex com uma ferramenta online comoregex101

Atualizar
O regex a seguir remove as palavras conforme você descreveu, bem como os espaços em branco à direita:([^\s]+[-=."{}\r\n][^\s]+\s*)+

Eu testei com sucesso no seu exemplo:

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

Depois:

other words

other words

other words

before words other words

other words

informação relacionada