В настоящее время я использую это REGEX для получения целых слов с префиксом PRE_
\b(PRE_)\S*
Это работает нормально в большинстве случаев, но я хотел бы обрабатывать случаи, когда специальный символ является частью слова, например, точка, запятая или другой специальный символ . , ; - { } ( ) [ ]
Например, вот эти слова:
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_
Я хотел бы найти только первую часть слова с разделителями. Чтобы я мог удалить или заменить слово. Так, в случае замены всех слов с префиксом PRE_ в этом сценарии на "" в качестве текста, я бы получил:
<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>
Я пробовал разные REGEX, но ничего не совпадает полностью правильно во всех образцах. Что-то вроде следующего не работает:
\b(PRE_)\S*(?:[;]|[.][-])$
Любая помощь здесь будет высоко оценена.
решение1
Метод 1
Вместо того, чтобы включать все символы, не являющиеся пробелами ( \S
в вашем первом регулярном выражении) PRE_
, просто укажите все «неразделители» в вашем поиске, и это должно сработать.
Следующее работает для всех ваших примеров, если заменить \S
на [A-Za-z]
:
\bPRE_[A-Za-z]*
Если вы хотите включить цифры, дефис ( -
) и подчеркивание ( _
), вы можете использовать следующее:
\bPRE_[-A-Za-z0-9_]*
Метод 2
В противном случае вы можете изменить свое регулярное выражение \S
на «что угодно, кроме \s
и других разделителей, таких как .
, ,
, ;
, {
. }
, (
, )
, [
, ]
(и любых других по вашему желанию)». Таким образом, ваше регулярное выражение становится
\bPRE_[^.;,{}()[\]\s]*
Фраза [^blahblah]
означает любой символ, кроме бла-бла.