NotePad ++ Obtenha palavras com padrão REGEX de delimitadores

NotePad ++ Obtenha palavras com padrão REGEX de delimitadores

Atualmente estou usando este REGEX para obter palavras inteiras com um prefixo PRE_

\b(PRE_)\S*

Isso funciona bem na maioria dos casos, mas eu gostaria de lidar com casos em que um caractere especial faça parte da palavra, como ponto final, vírgula ou outro caractere especial. , ; - { } ( ) [ ]

Por exemplo, as palavras aqui:

PRE_samplewordwithoutdelimiter
PRE_sampleword.otherwordsnotincluded;
PRE_Sampleword{}...deleted
PRE_complexword()a.;.is deleted
Somewords ahead PRE_sometext() ending in other words
Words with bracket [PRE_brackettext] are deleted
PRE_sampleword is spaced out so deleted
sampleword.PRE_deleted;
notdeleted.notdeleted.PRE_

Gostaria apenas de encontrar a primeira parte de uma palavra delimitada. Então posso excluir ou substituir a palavra. Portanto, no caso de substituir todas as palavras prefixadas PRE_ neste cenário por "" como texto, eu obteria:

<DELETED>
<DELETED>.otherwordsnotincluded;
<DELETED>{}...deleted
<DELETED>()a.;.is deleted
Somewords ahead <DELETED>() ending in other words
Words with bracket [<DELETED>] are deleted
<DELETED> is spaced out so deleted
sampleword.<DELETED>;
notdeleted.notdeleted.<DELETED>

Eu estava tentando REGEX diferente, mas nada corresponde totalmente ao correto nas amostras. Algo como o seguinte não funciona:

\b(PRE_)\S*(?:[;]|[.][-])$

Qualquer ajuda aqui seria muito apreciada.

Responder1

Método 1

Em vez de incluir todos os caracteres que não sejam de espaço ( \Sem seu primeiro regex) depois PRE_, simplesmente indique todos os "não-delimitadores" em sua pesquisa e isso deve ser feito.

O seguinte funciona para todos os seus exemplos, substituindo \Spor [A-Za-z]:

\bPRE_[A-Za-z]*

Se desejar incluir números, hífen ( -) e sublinhado ( _), você pode usar o seguinte:

\bPRE_[-A-Za-z0-9_]*

Método 2

Caso contrário, você poderia modificar seu \Sem "qualquer coisa, menos \se outros delimitadores, como ., ,, ;, {. }, (, ), [, ](e quaisquer outros que desejar)". Dessa forma, seu regex se torna

\bPRE_[^.;,{}()[\]\s]*

A frase [^blahblah]significa qualquer caractere, exceto bláblá.

informação relacionada