Mit RegularExpressions bestimmte werte aus Datei finden

  • VB.NET
  • .NET (FX) 4.0

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Jamx7.

    Mit RegularExpressions bestimmte werte aus Datei finden

    Hi Leute, ich versuche seit einer weile bestimmte Werte aus einer Datei auszulesen mithilfe von RegEx jedoch komm ich einfach nicht weiter. ;(

    Es handelt sich um eine Datei die jedoch nicht immer gleich aufgebaut ist:


    Erste Variante:

    Quellcode

    1. railVehicle = {
    2. topSpeed = 160.0,
    3. weight = 83.0,
    4. engines = {
    5. {
    6. type = "DIESEL",
    7. power = 2252.0,
    8. tractiveEffort = 300.0
    9. }
    10. },

    Zweite Variante:

    Quellcode

    1. railVehicle = {
    2. topSpeed = 160.0,
    3. weight = 83.0,
    4. engines = {
    5. { type = "DIESEL", power = 2252.0, tractiveEffort = 300.0 }
    6. },
    7. },


    Beim auslesen der Werte aus der ersten Variante funktioniert alles bestens jedoch wenn ich jetzt z.B. den Wert tractiveEffort aus der zweiten Varriante { type = "DIESEL", power = 2252.0, tractiveEffort = 300.0 } mit RegEx auslesen will gibt er mir die komplette Zeile zurück, mein Code sieht so aus:

    VB.NET-Quellcode

    1. Private Sub BtnTractiveEffort_Click(sender As Object, e As EventArgs) Handles BtnTractiveEffort.Click
    2. findLinex("[^\-\-]tractiveeffort\s*=\s*")
    3. End Sub


    VB.NET-Quellcode

    1. Public Sub findLinex(ByVal RegExStr As String)
    2. Dim countx As Integer = FastColoredTextBox1.FindLines(RegExStr, System.Text.RegularExpressions.RegexOptions.IgnoreCase).Count - 1
    3. If countx >= 0 Then
    4. Dim intx As Integer = FastColoredTextBox1.FindLines(Word, System.Text.RegularExpressions.RegexOptions.IgnoreCase).Item(0)
    5. FastColoredTextBox1.Navigate(intx)
    6. FastColoredTextBox1.Selection = New Range(FastColoredTextBox1, intx)
    7. FastColoredTextBox1.SelectionColor = Color.DarkRed
    8. TextBox1.Text = FastColoredTextBox1.GetLineText(intx).ToLower.Replace("tractiveeffort", "").Replace("=", "").Replace(Chr(9), "").Replace(Chr(32), "").Replace(",", "")
    9. End If
    10. End Sub


    Ich hoffe ihr könnt mir weiter helfen habe mir auch das komplette RegEx Tutorial - Blutige Anfänger und Fortgeschrittene durchgelesen hat mir sehr geholfen aber komme trotzdem nicht weiter was mache ich falsch
    :?:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Jamx7“ ()

    Jamx7 schrieb:

    Lua Forma
    Das sieht mir eher nach JSon aus, dafür gibt es Wrapper.
    Bevor Du Deine Hilfe auf den falschen Pfad schickst, bleib zunächst allgemein und untersuch das Format und die Lesbarkeit des Formats.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Es ist Lua da die Datei mit function data() beginnt das gibt es in Json nicht und in JSon werden Kommentare mit // oder /* gemacht und in Lua mit -- trotzdem danke ist ja nicht die ganze Datei da diese viel zu lang ist um alles hier zu posten. Aber die Idee mit Wrapper zu Arbeiten ist gut werde mal schauen ob ich was für Lua finde danke.

    Zitat entfernt. ~Thunderbolt

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Thunderbolt“ ()

    Jamx7 schrieb:

    Lua
    Dies hier?
    Ist bei mir noch nicht vorgeigekommen. :/
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    OK jetzt bin ich komplett verwirrt hab mir gerade die Dokumetation von der Lua Website angeschaut und ist wohl doch kein Lua aber zu JSon passt es auch nicht ?( Hab die Datei mal als anhang hochgeladen habe die Datei endung jedoch von .mdl in .txt ändern müssen vielleicht bekommt ja jemand raus was es ist :)
    Dateien
    • br_245.txt

      (2,65 kB, 422 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Jamx7“ ()

    erinnert mich sehr an JSon, allerdings kommen da Fehler:
    - Zeilenschaltrung im String,
    - END.

    Zitat entfernt. ~Thunderbolt
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()

    JSON ists auf jeden Fall nicht, gibt es verschiedene Gründe. Aber wenn du einfach nur jeweils einen bestinnten Wert haben willst, wäre das denke ich die einfachste Möglichkeit:

    Quellcode

    1. tractiveeffort ?\= ?([^,\}]*)

    Dann müsstest du die Matches halt noch auslesen (hast dann deinen Wert in der geklammerten Subexpression), wie genau das in VB ging müsste ich jetzt auch nachschauen.

    Bei deinem Regexp war das = nicht mit \ maskiert, könnte n Problem gewesen sein.

    vG,
    Lupus