Versuche ein RegExpr, welches mir in solchem Code:
struct W_RX_: RX_
{
W_RX_() : RX_() {};
friend class RAW;
std::string dbUniqueId;
W_RX_Header header;
};
typedef struct W_RX_W_RX_;
Ziel ist das Filtern aller variablen deklarationen, dieser Pattern klappt:
@"(\s+)[^friend class]([\w:_]+)\s+([\w]+);"
Aber ich bekomme durch [^friend class] probleme mit W_RX_, es ist in der Tat so, dass alles korrekt gematched wird, jedoch in der jeweiligen Gruppe anstatt W_RX_ nur RX drin ist!
Gibt es da einen anderen weg? Oder wo ist der fehler?
Life is a short
Hallo Seikilos,
[^friend class]
ist das gleiche wie
[^acdefilnrs ]
und damit sicher nicht, was du meinst. Könnte sein, dass du eigentlich einen negativen Lookbehind meinst.
herbivore
PS: Du kennst On-the-fly Regex-Tester: Regex-Lab?
Klar kenne ich den RegExpr Tester, hab ich natürlich auch.
Meinst du mit dem Lookahead:
@"(\s+)(?!friend class)([\w:_]+)\s+([\w]+);"
Wenn ja: hat nicht geklappt.
PS: Kennst du schon das Online Reg Expr Test Tool? 😄
Lookbehind konsumiert doch nur das Element nicht, oder?
Life is a short
Hallo Seikilos,
hat nicht geklappt.
was willst du denn überhaupt erreichen? Was soll der Teil mit dem friend class bewirken?
Kennst du schon das Online Reg Expr Test Tool?
Kannte ich nicht ... und es ist vor allem nicht on-the-fly. 😃
herbivore
Das ist schlechter C++ code, viel davon und ich muss alle getter und setter generieren, nur nicht für friend class 😄
Im Grunde ist das ja wurscht, ist ja nur ne Zeichenketten-Operation
Life is a short
Hallo Seikilos,
dann ist der negative Lookbehind schon das richtige. Du musst nur noch dafür sorgen, dass der Pattern - wenn überhaupt - immer auf eine gesamte Struktur-Komponente passt, also z.B.
(?≤[{;])(\s*)(?!friend class)([\w:_]+)\s+([\w]+);
herbivore
Hallo Seikilos,
den negativen Lookahead kannst du jetzt sogar weglassen, weil eine friend-class-Zeile schon deshalb nicht passt, weil sie aus drei und nicht nur aus zwei Worten besteht.
herbivore
Weißt du, ob man die Klammern Parre () nummerieren kann? Ich muss ein Pattern ändern und vorne ein Klammernpaar einfügen, nur verschiebt sich dadurch der index aller späteren klammern, was extrem nervig ist
Life is a short
Hallo Seikilos,
man kann Gruppen benennen: (?<name>...)
herbivore
Wollte gestern die Antwort selber posten, aber da hatte das Forum Probleme.
Life is a short