15 Stimmen

Regulärer Ausdruck, der nur auf uneingeschriebene Sonderzeichen passt

Ich versuche, einen regulären Ausdruck zu finden, der nur auf Zeichen passt, denen keine spezielle Escape-Sequenz in einer Zeichenkette vorausgeht.

Zum Beispiel in der Zeichenfolge Is ? stranded//? möchte ich die Möglichkeit haben, die ? die nicht mit einer anderen Zeichenkette escaped wurde, so dass ich dieses Ergebnis erhalten kann: **Is Dave stranded?**

Aber ich habe beim besten Willen keine Möglichkeit gefunden, einen Weg zu finden. Ich habe nur reguläre Ausdrücke gefunden, die alle ersetzbaren Zeichen auffressen.

Wie konstruiert man einen regulären Ausdruck, der nur auf Zeichen passt, denen keine Escape-Sequenz vorausgeht?

0voto

Andy Punkte 3432

Versuchen Sie es mit einem Vergleich:

(^|(^.)|(.[^/])|([^/].))[special characters list]

0voto

Harry Lime Punkte 29086
String aString = "Is ? stranded//?";

String regex = "(?<!//)[^a-z^A-Z^\\s^/]";
System.out.println(aString.replaceAll(regex, "Dave"));

Der Teil des regulären Ausdrucks [^a-z^A-Z^\\s^/] passt auf nicht-alphanumerische Zeichen, Leerzeichen oder Schrägstriche, die keine Schrägstriche sind.

El (?<!//) Teil eine negative Rückschau hält - siehe docco hier für weitere Informationen

Dies ergibt die Ausgabe Is Dave stranded//?

0voto

Ich habe diese benutzt:

((?:^|[^\\])(?:\\\\)*[ESCAPABLE CHARACTERS HERE])

Demo: https://regex101.com/r/zH1zO3/4

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X