3 Stimmen

Wie kann ich einen Perl-Regex so konvertieren, dass er mit Boost::Regex funktioniert?

Was ist das Boost::Regex-Äquivalent zu diesem Perl-Regex für Wörter, die mit ing o ed o en ?

/ing$|ed$|en$/

...

3voto

Leon Timmermans Punkte 29718

Der wichtigste Unterschied ist, dass Regexps in C++ Zeichenketten sind, so dass alle Regexp-spezifischen Backslash-Sequenzen (wie \w y \d sollte in Anführungszeichen gesetzt werden ( "\\w" y "\\d" )

2voto

Tim Pietzcker Punkte 311448
/^[\.:\,()\'\`-]/

werden sollte

"^[.:,()'`-]"

Der spezielle Perl-Regex-Begrenzer / gibt es in C++ nicht, also sind Regexe nur eine Zeichenkette. In diesen Zeichenketten müssen Sie darauf achten, dass Backslashes korrekt entschlüsselt werden ( \\ für jeden \ in Ihrer ursprünglichen Regex). In Ihrem Beispiel waren all diese Backslashes jedoch unnötig, also habe ich sie komplett weggelassen.

Es gibt noch andere Vorbehalte; einige Perl-Funktionen (wie Lookbehind mit variabler Länge) gibt es in der Boost-Bibliothek nicht, soweit ich weiß. Es könnte also nicht möglich sein, einfach jede Regex zu übersetzen. Ihre Beispiele sollten aber in Ordnung sein. Obwohl einige von ihnen seltsam sind. .*[0-9].* passt auf jede Zeichenkette, die irgendwo eine Zahl enthält, nicht all numbers .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X