NotePad ++ Obter palavras com o padrão REGEX de Delimitadores

2

No momento, 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 faz 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_

Eu gostaria apenas de encontrar a primeira parte de uma palavra delimitada. Então eu posso deletar ou substituir a palavra. Portanto, no caso de substituir todas as palavras PRE_ prefixo neste cenário por "" como o 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 realmente corresponde totalmente correto em todas as amostras. Algo como o seguinte não funciona:

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

Qualquer ajuda aqui seria muito apreciada.

    
por Swoop 19.07.2014 / 01:15

1 resposta

1

Método 1

Em vez de incluir todos os caracteres não espaciais ( \S no seu primeiro regex) após PRE_ , simplesmente declare todos os "não-delimitadores" em sua pesquisa e isso deve ser feito.

O seguinte funciona para todo o seu exemplo, substituindo \S por [A-Za-z] :

\bPRE_[A-Za-z]*

Se você deseja incluir valores numéricos, hífen ( - ) e sublinhado ( _ ), use o seguinte:

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

Método 2

Caso contrário, você pode modificar seu \S em "qualquer coisa, mas \s e outros delimitadores, como . , , , ; , { . } , ( , ) , [ , ] (e qualquer outro a seu desejo) "Dessa forma, seu regex se torna

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

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

    
por 21.07.2014 / 09:41