Text durchsuchen mit RegEx

CopWorker

Erfahrenes Mitglied
Hallo zusammen,

gibt es eine Möglichkeit mit RegEx folgenden String zu durchsuchen.

C#:
IP-Address="192.168.0.0" Servername="UA Local Discovery Server" Rechnername="WG-DE-D11001DS" Comment="Lokaler OPC-UA Server" Type="SimaticNET.S7" Company="Coperion" IntValue='45'

Die Suche soll den gleichen Kriterien entsprechen wie es beim XML Parser erfolgt.
Der Unterschied liegt darin, dass ich keine XML Datei lade (siehe nachfolgender Code) sondern die Zeilen einzeln aus einer Liste zur Verfügung habe.

C++:
XmlDocument xDoc = new XmlDocument();
xDoc.Load(strFilePath);
XmlNodeList name = xDoc.GetElementsByTagName("Storages");


Sodass es möglich ist nur die Attributliste zu durchforsten.

C#:
foreach (XmlAttribute xAttr in xn.Attributes) //Attribute auslesen
{
     switch (xAttr.Name)
     {
        case "IP-Address"
            break;
        
         case "Servername"
            break;
                                
    }
}

Vielen Dank.
Grüße von CopWorker
 

CopWorker

Erfahrenes Mitglied
Hallo Yaslaw,

da meckert mein Compiler noch an der Stelle ["'] mit der Beschreibung:
Syntaxfehler. "," erwartet.

Der String sollte dann gesplittet werden und in einer Liste landen.

C#:
IP-Address="192.168.0.0"
Servername="UA Local Discovery Server"
Rechnername="WG-DE-D11001DS"
Comment="Lokaler OPC-UA Server"
Type="SimaticNET.S7"
Company="Coperion"
IntValue='45'

Die Findings sind kein Problem:
Code in .NET:
strRet = mTemp.Groups["name"].Value;
strRet = mTemp.Groups["value"].Value;

Grüße CopWorker
 

Yaslaw

n/a
Moderator
" innerhalb eines Strings musst du maskieren. Je nach Programierstprache mit "" (VB) oder \" (fast alle Anderen).
 

Yaslaw

n/a
Moderator
Apropos, regex101 kann C# erstellen
regex101: build, test, and debug regex
C#:
using System;
using System.Text.RegularExpressions;

public class Example
{
    public static void Main()
    {
        string pattern = @"(?<name>\b[\w-]+\b)=(?<delimiter>[""'])(?<value>[(?<=\\).]*?)(?&delimiter)";
        string input = @"IP-Address=""192.168.0.0"" Servername=""UA Local Discovery\"" Server"" Rechnername=""WG-DE-D11001DS"" Comment=""Lokaler OPC-UA Server"" Type=""SimaticNET.S7"" Company=""Coperion"" IntValue='45'";
        RegexOptions options = RegexOptions.Multiline;
        
        foreach (Match m in Regex.Matches(input, pattern, options))
        {
            Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
        }
    }
}
 

CopWorker

Erfahrenes Mitglied
Hallo Yaslaw,

vielen Dank für die Hilfe.
Leider wird hier während der Laufzeit eine Exception rausgeworfen.
Hier die Meldung:
C#:
"(?<name>\b[\w-]+\b)=(?<delimiter>["'])(?<value>[(?<=\\).]*?)(?&delimiter)" wird analysiert - Unbekanntes Gruppierungskonstrukt.

Ich kann aber nicht erkenne an welcher Stelle der Fehler auftritt.

MfG. CopWorker
 

Anhänge

  • RegEx_Matches.jpg
    RegEx_Matches.jpg
    48,6 KB · Aufrufe: 1

Yaslaw

n/a
Moderator
Was hast du überhaubt für eine Sprache? Ich kann keine der .NET. Aber für Andere wäre es sicher interessant, ob c#.NET, VB.NET oder sonstwas.
 

CopWorker

Erfahrenes Mitglied
Hallo Yaslaw,

ich schreibe in C# mit .NET Framework 4.6.2
Auch regex101 führt bei mit nicht zum gewünschten Ergebnis: no match

mfG. CopWorker
 

Anhänge

  • RegEx_NoMatch.PNG
    RegEx_NoMatch.PNG
    22,9 KB · Aufrufe: 3