2009-03-12 3 views
1

Ich habe einen regulären Ausdruck, worefering zu bereits bestehenden Gruppe in regex, C#

%word% can occur multiple times, separated by a "<" 

% Wort% definiert als ".*?"|[a-zA-Z]+ so i

schrieb
(".*"|[a-zA-Z]+)([<](".*"|[a-zA-Z]+))* 

Gibt es irgendeine Weise, die ich es schrumpfen Fang-Gruppen verwenden?

(".*"|[a-zA-Z]+)([<]\1)*, 

Aber ich glaube nicht, \1 verwendet werden können, da sie die erste Erfassung wiederholen bedeuten würde, wie ich nicht wissen würde, was gefangen genommen wurde, da es eine Zeichenfolge in Anführungszeichen oder ein Wort sein kann.

Jede ähnliche Sache kann ich verwenden, um zu verweisen, die der vorher geschriebenen Gruppe entspricht. Ich arbeite in C#.

+0

mit grep es funktioniert, interessante Frage :) +1 –

Antwort

0

Da die Unterstützung noch für das Feature nicht da ist, habe ich einen String replacer, wo ich schrieb die spezifischen Wörter, die ich durch Regex ersetzen muss, die %% verwenden und schrieb dann das Programm, um es durch den regulären Ausdruck zu ersetzen, der für den Text definiert wurde.

1

String.Format mit Wiederholungen zu vermeiden und keine gibt es keine Möglichkeit, die regex Gruppe zu wiederholen wörtlich

String.Format("{0}([<]{0})*", @"("".*""|[a-zA-Z]+)")