Zeichenfolge mit Regex abgleichen, solange sie nicht von Klammern umgeben ist

8

Ich suche nach einer Zeichenfolge "Order By XXX", wobei XXX ein beliebiger Buchstabe, eine Zahl, ein Punkt, ein Komma, ein Leerzeichen oder eine eckige Klammer sein kann. Allerdings würde ich das nur dann angleichen wollen, wenn es nicht von Klammern umgeben ist (Klammern auf der einen Seite sind ok, solange es nicht auf beiden Seiten ist). Es sollte also der kursiv geschriebene Teil von "" sein, damit sollte nichts in

übereinstimmen

Sollte übereinstimmen (übereinstimmender Abschnitt in Kursivschrift):

  • Wählen Sie X von Y order by z aus
  • Wählen Sie y = (wählen Sie oben 1 Z aus C Sortieren nach [ID] desc )

Sollte nicht übereinstimmen:

  • Wählen Sie X von Y aus (Reihenfolge nach z)
  • Wählen Sie a.a, NTILE (4) OVER (Sortieren nach a.b) durch a.c

Ich habe die Regex-Zeichenfolge für die Übereinstimmung der Reihenfolge mit dem Text: [ ]*order by [\w,.\[\] ]+ . Jedoch habe ich einige Probleme, den Lookahead / hinter der Arbeit richtig zu bekommen. Irgendwelche Ratschläge zum weiteren Vorgehen?

    
Yaakov Ellis 14.06.2012, 14:04
quelle

3 Antworten

1

Versuchen Sie Folgendes:

%Vor%

Beim Testen in PowerShell:

%Vor%     
Damian Powell 14.06.2012, 14:37
quelle
0

Das funktioniert für mich, lass es mich wissen, wenn es andere Fälle gibt, die mir fehlen:
Regex r = new Regex(@"[^(](order by [^)]+)", RegexOptions.IgnoreCase);

    
user1456460 14.06.2012 14:28
quelle
-1

Sie können den Wechsel wie folgt verwenden:

%Vor%

"order by XXX" wird entweder von der ersten oder der zweiten umschließenden Klammer erfasst.

    
Jack 14.06.2012 14:53
quelle

Tags und Links