Regulärer Ausdruck - aber wie?
woako
- perl
Hallo,
wie erhalte ich am einfachsten das letzte Vorkommen eines Zeichens in einem String?
Gruß
woako
Hallo
wie erhalte ich am einfachsten das letzte Vorkommen eines Zeichens in einem String?
keine Ahnung, ob es nicht irgendwo was fertiges gibt, aber wie wäre es mit einer Kombination von
damit man die Regexp-Engine gar nicht erst anwerfen muss?
Freundliche Grüße
Vinzenz
gudn tach!
wie wäre es mit einer Kombination von
wuerde ich wohl auch so machen.
trotzdem noch der vollstaendigkeit halber der regexp:
/y(?:[^y]*)$/
sollte das letzte y matchen. und mit pos holt man sich dessen position.
prost
seth
Hallo,
keine Ahnung, ob es nicht irgendwo was fertiges gibt, aber wie wäre es mit einer Kombination von
damit man die Regexp-Engine gar nicht erst anwerfen muss?
danke, daran habe ich auch (als Notlösung) gedacht, falls es nichts eleganteres gibt.
Aber ist die Regexp-Engine (falls es damit gehen sollte) so nachteilig?
Gruß
woako
gudn tach!
Aber ist die Regexp-Engine (falls es damit gehen sollte) so nachteilig?
kannst ja mal beide methoden gegeneinander um die wette laufen lassen und hier die ergebnisse posten. nimm dafuer mal einen kurzen und mal einen langen string. mich wuerden die ergebnisse auch interessieren.
prost
seth
Hallo,
Aber ist die Regexp-Engine (falls es damit gehen sollte) so nachteilig?
kannst ja mal beide methoden gegeneinander um die wette laufen lassen und hier die ergebnisse posten. nimm dafuer mal einen kurzen und mal einen langen string. mich wuerden die ergebnisse auch interessieren.
Demnach handelte es sich bei Euren Aussagen nur um eine Vermutung?
Und warum die Titeländerung in "regexp vs. langweilige string-funktionen"?
Langweilig, weil einfallslos oder weil langwierig?
In beiden Fällen würde dies ja für die regexp sprechen.
Werde bei Gelegenheit einen Vergleich starten.
Gruß
woako
gudn tach!
Aber ist die Regexp-Engine (falls es damit gehen sollte) so nachteilig?
kannst ja mal beide methoden gegeneinander um die wette laufen lassen und hier die ergebnisse posten. nimm dafuer mal einen kurzen und mal einen langen string. mich wuerden die ergebnisse auch interessieren.
Demnach handelte es sich bei Euren Aussagen nur um eine Vermutung?
mehr oder weniger (ich vermute nur; ob Vinzenz nur vermutet oder ob er es weiss, weiss ich nicht).
das verwenden von regulaeren ausdruecken kann viel mehr zeit kosten als das anwenden "langweiliger" string-funktionen. manchmal sind aber auch regexp schneller. wenn man genau weiss, wie die jeweiligen dinger arbeiten, kann man auch so abschaetzen, was schneller sein wird.
je ungenauer man's weiss, desto schlechter werden die abschaetzungen.
der regexp wird durch den gesamten string laufen und je nach anzahl von "y"s mehrmals "denken", er habe das richtige "y" gefunden. da wird mehrmals gebacktrackt, bis tatsaechlich das richtige "y" gefunden wird.
wuerde man den string vorher revertieren, braechte man ja nur nach dem ersten "y" suchen und koennte dann aufhoeren. die frage ist also, wie perl revertiert. aber vermutlich schneller als der regexp arbeitet.
denkbar waere noch eine kombination, (reverse, //, pos); aber dass index hier langsamer waere als (//, pos), bezweifle ich, so aus dem bauch heraus.
Und warum die Titeländerung in "regexp vs. langweilige string-funktionen"?
Langweilig, weil einfallslos oder weil langwierig?
ich wollte erst "konventionell" schreiben, aber das in perl eigentlich eher die regexp-geschichten. "langweilig" war hier im sinne von "das kann ja jeder" oder "weichei-" gemeint. ;-)
In beiden Fällen würde dies ja für die regexp sprechen.
"langwierig" wuerde, "einfallslos" wuerde nicht. code muss normalerweise schnell oder lesbar sein (oft geht sogar beides). einfallsreichtum spielt da zwar auch mit, aber hat niedere prioritaet.
Werde bei Gelegenheit einen Vergleich starten.
http://search.cpan.org/~nwclark/perl-5.8.8/lib/Benchmark.pm hilft dir evtl. dabei.
Hi,
damit man die Regexp-Engine gar nicht erst anwerfen muss?
Ob reverse oder regex sinnvoller ist, ist u.a. auch davon abhähngig, wie lang der String ist - bei reverse wird ja ein neuer String angelegt, der Speicherplatz braucht ...
cu,
Andreas
keine Ahnung, ob es nicht irgendwo was fertiges gibt
Da gibt's in der Tat was von Ratiopharm.
Siechfred