NET RegEx Block in Text finden
Hallo an alle,
ich lese zwar schon lange mit, aber jetzt habe ich doch eine Frage. Falls ich die Netiquette hier nicht so drauf habe: seid etwas nachsichtig
Ich habe das Problem, das ein RegeEx-Pattern, welches bei unterschiedlichen Test immer funktioniert, in meinem Programm keinen Match holt.
Folgender beispielhafter Text:
und dieses Pattern:
liefert bei Regexstorm das gewünschte Ergebnis(zumindest wenn man nach dem Link die vier Leerzeichen vor dem letzten END wieder einfügt...).
Ich verwende folgenden Code in meinem Programm:
und erhalte immer 0 Matches. Hat jemand eine Idee, was ich hier verkehrt mache?
Für das Zeilenende habe ich mehrere Varianten \r und \n probiert. Langsam bin ich am verzweifeln.
Vielen Dank und Grüße
saggi
ich lese zwar schon lange mit, aber jetzt habe ich doch eine Frage. Falls ich die Netiquette hier nicht so drauf habe: seid etwas nachsichtig
Ich habe das Problem, das ein RegeEx-Pattern, welches bei unterschiedlichen Test immer funktioniert, in meinem Programm keinen Match holt.
Folgender beispielhafter Text:
Anderer Code in Varianten
PROCEDURE EineProzedur@1234567();
VAR
Variable1@8888888888 : Integer;
Variable2@9999999999 : Code[20];
BEGIN
IF Variable1 > 0 THEN
EXIT;
IF NOT Variable2 = 'TEST' THEN
EXIT;
END;
END;
Auch anderer Code in Varianten
PROCEDURE (.*?)@.*?;\r(.*?\n\s{4}END;)\r
Ich verwende folgenden Code in meinem Programm:
Private Function FindProcedure(TextToFind As String) As Dictionary(Of String, String)
Dim ReturnDict As New Dictionary(Of String, String)
Dim pattern As String = "PROCEDURE (.*?)@.*?;\r(.*?\n\s{4}END;)\r"
Dim RegEx1 As New RegularExpressions.Regex(pattern, RegularExpressions.RegexOptions.IgnoreCase Or RegularExpressions.RegexOptions.Singleline)
Dim matches As MatchCollection = Regex.Matches(TextToFind, pattern)
For Each match As Match In matches
ReturnDict.Add(match.Groups(0).Value, match.Groups(1).Value)
Next
Return ReturnDict
End Function
Für das Zeilenende habe ich mehrere Varianten \r und \n probiert. Langsam bin ich am verzweifeln.
Vielen Dank und Grüße
saggi
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 619399
Url: https://administrator.de/forum/net-regex-block-in-text-finden-619399.html
Ausgedruckt am: 22.12.2024 um 06:12 Uhr
4 Kommentare
Neuester Kommentar
Dim t As String = IO.File.ReadAllText("D:\blablub.txt")
Dim results As System.Text.RegularExpressions.MatchCollection = System.Text.RegularExpressions.Regex.Matches(t, "(?ism)^(\s*)PROCEDURE\s+([^\(]+)(.*?)^\1END;", RegexOptions.Compiled)
For Each m As Match In results
MsgBox(m.Value)
Next