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 ( \S
in 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 \S
durch 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 \S
in "alles außer \s
und 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.