Teile eines Regex-Ausdrucks als Nicht-Sonderzeichen behandeln

Teile eines Regex-Ausdrucks als Nicht-Sonderzeichen behandeln

Nehmen wir an, ich habe einen Regex-Ausdruck, der einige der Sonderzeichen verwendet, aber auch einen Abschnitt mit „normalem“ Text, der zufällig einige Symbole enthält. Nehmen wir außerdem an, ich bin zu faul, jedes „angebliche“ Sonderzeichen im Abschnitt „normaler Text“ zu maskieren.

Wie kann ich den „normalen“ Textteil einschließen, sodass Regex nicht ausrastet, wenn es denkt, es sei auf ein Sonderzeichen gestoßen (obwohl das in Wirklichkeit nicht der Fall ist)?

Nehmen wir als Beispiel an, ich suche nach dem Text:

.*Hello it's true that ([6*.5]^2=9).

Ich möchte sicherlich nicht jedes Mal, wenn in diesem Mathematikabschnitt ein Sonderzeichen vorkommt (oder das Apostroph in „don't“), mühsam das Escape-Zeichen verwenden. Andererseits möchte ich den .*Teil am Anfang als Sonderzeichen behandeln.

Kann ich den Abschnitt also einschließen Hello it's true that ([6*.5]^2=9), sodass Regex ihn als normalen Text und nicht als Sondertext behandelt?

Ich verwende Notepad++ zum Suchen und Ersetzen, aber hoffentlich ist die Antwort unabhängig vom verwendeten Programm immer gleich.

Antwort1

Bei einigen Tools können Sie ändern, ob Sonderzeichen standardmäßig maskiert werden müssen. Beispielsweise viverfügt (und Klone) über einen magicModus, der dies steuert. Damit können Sie die Anzahl der erforderlichen Maskierungen reduzieren.

Antwort2

Versuchen Sie \Q, einen Literal zu beginnen und mit zu enden \E.

Dies funktioniert mit vielen Regex-Varianten, obwohl es beispielsweise bei Java möglicherweise Probleme gibt.

Informationen erhalten von:http://www.regular-expressions.info/characters.html

verwandte Informationen