Actualmente estoy usando este REGEX para obtener palabras completas con un prefijo PRE_
\b(PRE_)\S*
Esto funciona bien en la mayoría de los casos, pero me gustaría manejar casos en los que un carácter especial es parte de la palabra, como un punto, una coma u otro carácter especial. , ; - { } ( ) [ ]
Por ejemplo, las palabras aquí:
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_
Me gustaría encontrar sólo la primera parte de una palabra delimitada. Entonces puedo eliminar o reemplazar la palabra. Entonces, en el caso de reemplazar todas las palabras con el prefijo PRE_ en este escenario con "" como texto, obtendría:
<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>
Estaba probando REGEX diferentes, pero nada coincide del todo correcto en todas las muestras. Algo como lo siguiente no funciona:
\b(PRE_)\S*(?:[;]|[.][-])$
Cualquier ayuda aquí sería muy apreciada.
Respuesta1
Método 1
En lugar de incluir todos los caracteres que no sean espacios ( \S
en su primera expresión regular) después PRE_
, simplemente indique todos los "no delimitadores" en su búsqueda y debería funcionar.
Lo siguiente funciona para todo su ejemplo, reemplazándolo \S
con [A-Za-z]
:
\bPRE_[A-Za-z]*
Si desea incluir números, guiones ( -
) y guiones bajos ( _
), puede utilizar lo siguiente:
\bPRE_[-A-Za-z0-9_]*
Método 2
De lo contrario, puede modificar su en \S
"cualquier cosa menos \s
y otros delimitadores como .
,,,,,,,,, ( y cualquier otro que desee )" . De esa manera, su expresión regular se convierte ,
en;
{
}
(
)
[
]
\bPRE_[^.;,{}()[\]\s]*
La frase [^blahblah]
significa cualquier carácter excepto blabla.