Gibt es eine Möglichkeit, eine Zeichenfolge zu erstellen, die einem bestimmten C # Regex entspricht?

8

Meine Anwendung verfügt über eine Funktion, die Text mithilfe eines regulären Ausdrucks analysiert, um spezielle Werte zu extrahieren. Ich muss auch Strings erstellen, die demselben Format folgen. Gibt es eine Möglichkeit, den bereits definierten regulären Ausdruck zum Erstellen dieser Zeichenfolgen zu verwenden?

Nehmen Sie beispielsweise an, dass meine Regex ungefähr so ​​aussieht:

%Vor%

Ich möchte MyRegex verwenden, um eine neue Zeichenfolge zu erstellen, etwa:

%Vor%

So dass created dann den Wert "sometextdata1" hat.

Update : Nach einigen der folgenden Antworten habe ich mich nicht klar genug ausgedrückt. Ich möchte keine zufälligen Zeichenfolgen generieren, die den Kriterien entsprechen. Ich möchte in der Lage sein, spezifische Zeichenfolgen zu erstellen, die den Kriterien entsprechen. Im obigen Beispiel habe ich "data1" bereitgestellt, um "group1" zu füllen. Im Grunde habe ich eine Regex, die ich in ähnlicher Weise wie Formatzeichenfolgen verwenden möchte, anstatt auch eine separate Formatzeichenfolge zu definieren.

    
Chris Phillips 10.03.2011, 00:07
quelle

3 Antworten

3

Du brauchst ein Werkzeug namens Rex. Nun, du brauchst es nicht, aber ich benutze es: -)

Ссылка

Sie können (obwohl nicht ideal) die exe als Referenz zu Ihrem Projekt hinzufügen und die öffentlich gemachten Klassen verwenden.

Es funktioniert ganz gut.

    
Vince Panuccio 10.03.2011, 00:29
quelle
1

Native RegEx kann so etwas nicht tun.

Wenn Sie wirklich Zeichenfolgen generieren möchten, die einer Gruppe von Kriterien entsprechen, können Sie Grammatikregeln für bestimmte Ausdrücke untersuchen (DCG) anstelle eines regulären Ausdrucks. Eine logische Programmiersprache wie Prolog sollte in der Lage sein, Strings zu generieren, die den von Ihnen definierten grammatikalischen Regeln entsprechen.

Aus Wikipedia:

  

Ein einfaches Beispiel für DCGs veranschaulicht, was sie sind und wie sie aussehen.

     

Satz - & gt; Nomen_phrase, Verb_phrase.

     

Nomenklatur - & gt; det, Nomen.

     

verb_phrase - & gt; Verb, Substantivphrase.

     

det - & gt; [der].

     

det - & gt; [a].

     

Nomen - & gt; [Katze].

     

Nomen - & gt; [Fledermaus].

     

Verb - & gt; [isst].

     

Das erzeugt Sätze wie "Die Katze frisst die Fledermaus", "Eine Fledermaus frisst die Katze". Man kann alle gültigen Ausdrücke in der von dieser Grammatik erzeugten Sprache in einem Prolog-Interpreter generieren ...

Aus Ihrer Frage klingt es so, als ob das nicht wirklich das ist, was Sie tun möchten. Mein Rat wäre, einfach eine Klasse zu erstellen, die das Objekt Dictionary<String, String> enthält, und eine benutzerdefinierte Methode ToString() , die Daten im entsprechenden Format zurückgibt. Das wäre viel einfacher ;-)

z.B.:

%Vor%     
Pandincus 10.03.2011 00:21
quelle
0

Vielleicht möchten Sie überprüfen, ob Pex es herausfinden kann. Erstellen Sie eine Methode, die eine Zeichenfolge abruft und zurückgibt, ob diese Übereinstimmung mit ihr übereinstimmt. Pex ist vielleicht schlau genug, um Eingaben für Ihre Methode zu finden, die verschiedene Aspekte des Ausdrucks testen. (Es könnte Ihnen sogar helfen, einige Fälle zu übersehen, die Sie nicht berücksichtigt haben.

Anders als das, nein. Sie bitten ein System (Regex), etwas zu tun, für das es überhaupt nicht gebaut wurde.

    
StriplingWarrior 10.03.2011 00:14
quelle

Tags und Links