vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
regex.match - Aufruf liefert unterschiedliche Ergebnisse in C# und VB.net 
Autor: BjoernBorg
Datum: 04.11.10 17:04

Hallo,
ich habe das Problem, dass ein regulärer Ausdruck in C# funktioniert, der selbe Code in VB.net aber nicht. In C# wird ein Match gefunden, in VB.net nicht. Hier einmal die beiden Ausschnitte aus dem Code:

C#:
// Variablendeklaration
String pattern1, pattern2, name, type;
Regex regex1, regex2;
Match m1, m2;
String _s = "~";
 
// Beispiel für "~": "~([^~:]+)(?::([^~:]*))?~"
pattern1 = _s + "([^" + _s + ":]+)(?::([^" + _s + ":]*))?" + _s;
pattern2 = "(?i)(sql|array)(?-i)\\((.*)\\)";
regex1 = new Regex(pattern1);
regex2 = new Regex(pattern2);
 
// Query String auf Suchmuster überprüfen
m1 = regex1.Match(_query);
while ( m1.Success ) {
    name = m1.Groups[1].Value;
    type = m1.Groups[2].Value;
    m2 = regex2.Match(type);
    if ( m2.Success ) {
        // weiterer code ...
    }
}
VB.net:
' Variablendeklaration
Dim pattern1, pattern2, name, type As String
Dim regex1, regex2 As Regex
Dim m1, m2 As Match
Dim _s as String = "~"
 
' Beispiel für "~": "~([^~:]+)(?::([^~:]*))?~"
pattern1 = _s + "([^" + _s + ":]+)(?::([^" + _s + ":]*))?" + _s
pattern2 = "(?i)(sql|array)(?-i)\\((.*)\\)"
regex1 = New Regex(pattern1)
regex2 = New Regex(pattern2)
 
' Query String auf Suchmuster überprüfen und DialogBox-Felder generieren
m1 = regex1.Match(_query)
While (m1.Success)
    name = m1.Groups(1).Value
    type = m1.Groups(2).Value
    m2 = regex2.Match(type)
    If m2.Success Then
        ' weiterer code ...
    End If
End While
In C# ist der fettgedruckte Ausdruck für m2.Success = true, bei VB.net ist er false!

Verwendeter Query String im ersten regex:
"SELECT * FROM x WHERE Suchwort LIKE '%~Person:SQL(SELECT suchwort FROM personen WHERE delflag = false)~%'
AND Datum >= '~Von Datumate~' AND Datum <= '~Bis Datumate~' ORDER BY Datum"

Verwendeter Query String im zweiten regex (Group(2) aus dem Match aus dem ersten regex):
"SQL(SELECT suchwort FROM personen WHERE delflag = false)"


Wahrscheinlich sehe ich nur den Wald vor lauter Bäumen nicht - wer weiß Aber vielleicht gibt es da ja tatsächlich ein Problem bzw. etwas, was ich in VB.net anders machen muss als in C#. Der erste Match (regex1) funktioniert auch einwandfrei. Der zweite Match (regex2) hingegen nicht in VB.

Ich bin für jeden Hinweis dankbar.

BjoernBorg
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
regex.match - Aufruf liefert unterschiedliche Ergebnisse in ...2.409BjoernBorg04.11.10 17:04
Re: regex.match - Aufruf liefert unterschiedliche Ergebnisse...1.321ModeratorFZelle04.11.10 17:20
Re: regex.match - Aufruf liefert unterschiedliche Ergebnisse...1.386BjoernBorg04.11.10 17:44

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel