2009-02-27 9 views
0

Gibt es eine relativ einfache Möglichkeit, Regex-Muster als einfachen Text oder als Regel zu erkennen?Ist das Regex-Muster ein einfacher Text oder eine Regel?

Ein Beispiel. @"[A-Z0-9]" - ist eine Regel, und @"\\[A-Z0-9\\]" ist ein einfacher einfacher Text (C# String-Syntax)

+0

Bitte erläutern Sie, die Frage klingt für mich ziemlich unklar. –

+0

Es klingt auch für mich unklar. – Swanand

+0

Willst du sagen, dass du einen Regex Regex willst? Um Regex zu finden? Wenn ja ... nein. –

Antwort

1

Kurz des Erfassens ‚[‘ das heißt Zeichen reguläre Ausdrücke entkommen, ich nichts aus der Spitze von meinem Kopf denken kann.

Da die Stringliteral wörtlich try @ Kopien mit -

all 1.Finding '['/'*'/'+'/'alle andere regex charachters' und dafür zu sorgen, dass der bisherige charachter a ‚\ ".

2. Eine andere Möglichkeit könnte sein, eine Grammatik/Regex zu schreiben, um dies zu überprüfen. Ich denke du brauchst eine Grammatik. In jedem Fall (1) ist einfacher.

Einige String-Methoden können helfen, die oben genannten zu überprüfen (wie IndexOf ...).

In jedem Fall ist eine Regex nur eine Zeichenfolge, außer und bis es kompiliert und verwendet wird. Ich verstehe immer noch nicht, warum du das machen willst. Wenn Sie sicherstellen wollen, dass etwas ein gut geformter Regex ist, ist das einfacher. (Ich kenne keine C# spezifische Art dafür - siehe Svishs Antwort.).

Hinweis
1.A regex ist immer eine Regel, weil die Regex „XYZ“ eine Regel, die immer passt „XYZ“ allein und nicht etwas anderes anzeigen lassen.

Ich hoffe, das hilft.

+0

Diese ganze Antwort sollte aufgeräumt und prägnanter gemacht werden. Sie müssen uns keine laufende Liste von "Bearbeitungen" bereitstellen. Wir haben Versionskontrolle auf Ihrer Antwort, wenn wir Änderungen sehen möchten. Konzentrieren Sie sich darauf, Ihre Antwort möglichst auf den Punkt zu bringen. – mmcdole

+0

Vielleicht hast du recht. Leider sollte ich die Escape-Symbole vor Sonderzeichen prüfen: \, *, +,?, |, {, [, (,), ^, $,., #. Und danach sollte ich Regex kompilieren, um die Korrektheit zu überprüfen. Ich werde Ihre Antwort als akzeptiert, aber ich frage mich, warum die Frage "Warum willst du das tun?" wird hier gefragt? – macropas

+0

@Simucal. Ich werde meine Antwort aufräumen.Ich würde es tun, sobald ich sicher war, dass ich die richtige Frage beantwortet hatte. – batbrat

0

Was meinst du? Ein regulärer Ausdruck wird immer als String geschrieben. Egal, wie Sie die Zeichenfolge schreiben, es wird immer eine Zeichenfolge sein.

Wenn Sie überprüfen wollen, ob ein String ein gültiger regulärer Ausdruck auf der anderen Seite ist (wenn das, was Sie fordern), können Sie dies immer tun:

try 
{ 
    new Regex(someRegexString); 
} 
catch(ArgumentException) 
{ 
    // Regular expression parsing error. I.e: Not a valid regular expression. 
} 

Nun, wenn Sie zu wollen Verwenden Sie die Zeichenfolge für reguläre Ausdrücke, die Sie entweder als Zeichenfolge oder als regulären Ausdruck verwenden können. Es als String zu verwenden ist wie ... es als String zu verwenden ... Wenn Sie es als regulären Ausdruck verwenden, erstellen Sie ein Regex Objekt (oder verwenden Sie einige der statischen Methoden von Regex). Wenn Sie es dann als Regel verwenden oder Text ersetzen, oder Dinge extrahieren, oder was auch immer, ändert das nichts wirklich. Der reguläre Ausdruck ist immer noch ein regulärer Ausdruck.

Verwandte Themen