NotePad ++ Holen Sie sich Wörter mit REGEX Pattern of Delimiters

2

Ich verwende derzeit diese REGEX, um ganze Wörter mit dem Präfix PRE_ zu erhalten.

\b(PRE_)\S*

Dies funktioniert in den meisten Fällen einwandfrei, aber ich möchte Fälle behandeln, in denen ein Sonderzeichen Teil des Wortes ist, z. B. ein Punkt, ein Komma oder ein anderes Sonderzeichen. ,; - {} () []

Zum Beispiel die Wörter hier:

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_

Ich möchte nur den ersten Teil eines abgegrenzten Wortes finden. So kann ich das Wort löschen oder ersetzen. Wenn Sie also in diesem Szenario alle Wörter mit dem Präfix PRE_ durch "" als Text ersetzen, erhalten Sie:

<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>

Ich habe verschiedene REGEX-Modelle ausprobiert, aber in den Samples stimmt wirklich nichts völlig überein. So etwas funktioniert nicht:

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

Jede Hilfe hier wäre sehr dankbar.

Sturzflug
quelle

Antworten:

1

Methode 1

Anstatt alle Nicht-Leerzeichen ( \Sin Ihrer ersten Regex) danach einzuschließen PRE_, geben Sie einfach alle "Nicht-Begrenzer" in Ihrer Suche an, und es sollte reichen.

Die folgenden Arbeiten für die ganze Ihr Beispiel durch das Ersetzen \Smit [A-Za-z]:

\bPRE_[A-Za-z]*

Wenn Sie numerische Zeichen, Bindestriche ( -) und Unterstriche ( _) einfügen möchten, können Sie stattdessen Folgendes verwenden:

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

Methode 2

Andernfalls könnten Sie Ihre ändern \Sin „alles andere als \sund andere Trennzeichen wie ., ,, ;, {. }, (, ), [, ](Und alle anderen auf Ihren Wunsch)“ Auf diese Weise Ihre regex wird

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

Der Ausdruck [^blahblah]bedeutet ein beliebiges Zeichen außer blahblah.

Kenneth L
quelle