2

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

1

Способ 1

Вместо включения всех непробельных символов (\S в вашем первом регулярном выражении) после PRE_ , просто укажите все «не разделители» в поиске, и это должно сработать .

Следующее работает для всего вашего примера, заменив \S на [A-Za-z]:

\bPRE_[A-Za-z]*

Если вы хотите включить цифры, дефис (-) и подчеркивание (_), вы можете использовать следующее:

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

Способ 2

В противном случае, вы можете изменить ваш \S в «ничего , кроме \s и других ограничителей , таких . { ( [ (И любые другие по Вашему желанию)» Таким образом ваше регулярное выражение становится

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

Фраза [^blahblah] означает любой символ, кроме blahblah.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .