NotePad++ Holen Sie sich Wörter mit dem REGEX-Muster von Trennzeichen

NotePad++ Holen Sie sich Wörter mit dem REGEX-Muster von Trennzeichen

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

\b(PRE_)\S*

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

Beispielsweise die Worte 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 ich in diesem Szenario alle Wörter mit dem Präfix PRE_ durch "" als Text ersetze, würde ich Folgendes erhalten:

<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-Ausdrücke ausprobiert, aber in den Beispielen stimmt nichts wirklich richtig überein. So etwas wie das Folgende funktioniert nicht:

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

Für jede Hilfe wäre ich sehr dankbar.

Antwort1

Methode 1

Anstatt alle Zeichen, die keine Leerzeichen sind ( \Sin Ihrem ersten regulären Ausdruck), nach einzuschließen PRE_, geben Sie in Ihrer Suche einfach alle „Nicht-Trennzeichen“ an, und es sollte funktionieren.

Das Folgende funktioniert für alle Ihre Beispiele, indem Sie es \Sdurch Folgendes ersetzen [A-Za-z]:

\bPRE_[A-Za-z]*

-Wenn Sie Zahlen, Bindestriche ( ) und Unterstriche ( ) einschließen möchten, _können Sie stattdessen Folgendes verwenden:

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

Methode 2

Andernfalls könnten Sie Ihren Ausdruck \Sin "alles außer \sund andere Trennzeichen wie ., ,, ;, {. }, (, ), [, ](und alle anderen nach Wunsch)" ändern. Auf diese Weise wird Ihr regulärer Ausdruck

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

Der Ausdruck [^blahblah]bedeutet jedes Zeichen außer blabla.

verwandte Informationen