![]() |
Teil des Matches eines regulären Ausdrucks extrahieren
Ich habe hier die vom Siemens Mobile Phone Manager extrahierten SMS in Form von RTF-Dateien. Dort ist der Text der SMS und einige Steuerinformationen in die RTF-Datei kodiert, an diese Steuerinformationen würde ich gerne rankommen.
Eine Datei sieht in etwa so aus: Zitat:
Mit folgendem Ausdruck bekomme ich den Teil ab dem info-Bezeichner:
Code:
Hier krieg ich natürlich nicht nur den Teil, der mich interessiert, sondern auch noch vornedran und hintendran was.
\\\*\\SemKeywords SEM\(.*\)\}\}
Meine Frage nun: wie kann ich den regulären Ausdruck modifizieren, dass ich nur den String Zitat:
|
Re: Teil des Matches eines regulären Ausdrucks extrahieren
Hi,
der RegEx von .NET sollte eigentlich mehrere Capture-Gruppen zurückliefern. Hast Du da schonmal geschaut? mfG mirage228 |
Re: Teil des Matches eines regulären Ausdrucks extrahieren
Vielleicht könntest du mit Rückreferenzen arbeiten, dann bekommst du z.B. den Teil des Erbebnisses, der der ersten, zeiten, ... Klammerung entspricht.
Dann müsstest du den Regulären Ausdruck so abändern:
Code:
\\\*\\SemKeywords SEM\([color=#ff0000]([/color].*[color=#ff0000])[/color]\)\}\}
|
Re: Teil des Matches eines regulären Ausdrucks extrahieren
@mirage228:
Ich hab den Audruck bisher nur in einem Test-Tool probiert. Aber was sind Capture-Gruppen? Und wie hilft mir das, denn woher soll der RegExpr-Parser wissen, dass ich nur einen Teil des Ausdrucks will? @jfheins: Und was bewirkt das genau? Ich sehe nämlich bei deiner Änderung erstmal keinen Unterschied :? |
Re: Teil des Matches eines regulären Ausdrucks extrahieren
Das eigendliche Ergebnis dürfte sich auch nicht unterscheiden, aber man kann (bestimmt auch in C#) danach auf die geklammerten Teile einzeln zugreifen ;)
P.S. Capture Gruppen müssten das gleiche sein, wie ein "geklammerter Teil" ... |
Re: Teil des Matches eines regulären Ausdrucks extrahieren
OK, mit dem Ausdruck von jfheins und dem Tip mit der Capture-Gruppe klappt es, ich habe allerdings keine Ahnung, warum :?
Mein Code sieht nun so aus:
Code:
Im zweiten Element steht der richtige Wert drin, warum auch immer.
String regExpr = "\\\\\\*\\\\SemKeywords SEM\\((.*)\\)\\}\\}";
Regex regex = new Regex(regExpr); Match match = regex.Match(content); String options = match.Groups[1].Value; Das Problem ist an für sich gelöst, ich würde aber gerne erfahren, warum :-D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz