NotePad++ Получить слова с помощью шаблона разделителей REGEX

NotePad++ Получить слова с помощью шаблона разделителей REGEX

В настоящее время я использую это 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]означает любой символ, кроме бла-бла.

Связанный контент