VB.Net String nicht "escapen"

06/01/2014 19:48 YatoDev#1
Hab noch nicht so viel mit regex gemacht vorallem nicht in VB.
Teil eines Regex patterns ist "\Q" was allerdings diesen fehler verursacht:
Ein Ausnahmefehler des Typs "System.ArgumentException" ist in System.dll aufgetreten.
Zusätzliche Informationen: "\Q" wird analysiert - Unbekannte Escape-Zeichenfolge \Q.

Damit kann ich nichts anfangen.... Habe schon gegoogelt aber nichts dazu gefunden (vielleicht auch das falsche gesucht)
Vielleicht könnt ihr mir ja helfen
06/01/2014 19:49 Requi#2
[Only registered and activated users can see links. Click Here To Register...]
06/01/2014 20:25 YatoDev#3
Funktioniert so nicht. Danach funktioniert das pattern nicht mehr und ist auch falsch.
Versucht habe ich es mit Regex.Escape
06/01/2014 20:35 snow#4
Ich weiß nicht, ob .NET das anders behandelt, aber ein \, das normal zum Escapen verwendet wird (was deine Exception ja auch aussagt), kann mit einem vorangestellten \ escaped werden, also "\\". Geht das bei dir?
06/01/2014 21:59 YatoDev#5
Quote:
Originally Posted by snow911 View Post
Ich weiß nicht, ob .NET das anders behandelt, aber ein \, das normal zum Escapen verwendet wird (was deine Exception ja auch aussagt), kann mit einem vorangestellten \ escaped werden, also "\\". Geht das bei dir?
ja das hab ich auch schon gelesen und auch probiert...
Das problem ist das das pattern dieses \\ dann auch enthält und es deswegen nicht geht. die fehlermeldung ist dann weg.
In dem fall wie ich es anwende sollte das als pattern benutzt werden :
(?is)\Q"\E(.*?)(?=\Q"\E) welches nicht funktioniert...
(die " müssen in vb so "" geschrieben werden)
Könnte jemand bei sich selbst mal rumprobieren und dann hier schreiben wie es geklappt hat?

(Das og pattern wirft mir die funktion richtig aus und funktioniert auch bei nicht .Net regex testern. Findet in einem text alle strings zwischen "")
06/02/2014 07:09 Mostey#6
Snow liegt da schon richtig, normalerweise müsstest du dann alles escapen. Alternativ kannst du auch ein '@' vor den String setzen, dann werden Escape Sequenzen komplett ignoriert.

Code:
new Regex(@"(?is)\Q"\E(.*?)(?=\Q"\E)")....
(Sorry, kann kein VB :D)
06/02/2014 12:50 tolio#7
^ das funktioniert in vb.net afaik nicht

hast du mal das hier ausprobiert?
[Only registered and activated users can see links. Click Here To Register...]
06/02/2014 13:42 YatoDev#8
Quote:
Originally Posted by tolio View Post
^ das funktioniert in vb.net afaik nicht

hast du mal das hier ausprobiert?
[Only registered and activated users can see links. Click Here To Register...]
ja hab ich probiert ging nicht.
Habe es jetzt ohne das \Q und sowas gemacht.
geht soweit auch hab noch keinen wirklichen nachteil gefunden
Trotzdem währe es gut zu wissen wie das geht
06/04/2014 08:22 マルセル#9
Mal einfach eine blöde Fragen zwischendurch, behandelt VB Escapesequenzen echt so sehr unterschiedlich wie C#? Kann ich mir eigentlich gar nicht vorstellen.
06/04/2014 10:01 Mostey#10
Quote:
Originally Posted by マルセル View Post
Mal einfach eine blöde Fragen zwischendurch, behandelt VB Escapesequenzen echt so sehr unterschiedlich wie C#? Kann ich mir eigentlich gar nicht vorstellen.
Anscheinend schon. In VB musst du über Konstanten escapen. Die unterstützen kein inline, wie es eigentlich in anderen Sprachen üblich ist.

Siehe [Only registered and activated users can see links. Click Here To Register...]

Vielleicht ist ja einfach nur das Regex Pattern falsch.
06/05/2014 20:51 YatoDev#11
Quote:
Originally Posted by Mostey View Post
Anscheinend schon. In VB musst du über Konstanten escapen. Die unterstützen kein inline, wie es eigentlich in anderen Sprachen üblich ist.

Siehe [Only registered and activated users can see links. Click Here To Register...]

Vielleicht ist ja einfach nur das Regex Pattern falsch.
in c# kommt die gleiche fehlermeldung auch mit @ vor dem string.

Das pattern ist richtig oder verwendet .Net was anderes als \Q \E um normale strings ins pattern einzubeziehen