Regulärer Ausdruck
Norbert
- programmiertechnik
0 Tom1 Dieter Raber0 Norbert1 Dieter Raber0 dedlfix
Hallo,
wie kann ich das letzte Vorkommen eines Textstrings in einer Zeile
ersetzen?
Mit fG
Norbert
Hello,
wie kann ich das letzte Vorkommen eines Textstrings in einer Zeile
ersetzen?
Bestimmen, suchen, finden, Position feststellen, Länge feststellen, ausschneiden, einfügen.
Da die Prozessoreigenen Stringfunktionen i.d.R. von links nach rechts arbeiten (kleine Adresse zur großen), kann es sinnvoll sein, den ganzen String zu reversieren und nach dem ersten Vorkommen des ebenfalls reversierten Suchstrings zu suchen.
Das kommt aber immer auf die Programmiersprache an, über die Du uns ja nix erzählt hast.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hallo Norbert,
eine Moeglichkeit waere, erst mal das letzte Vorkommen zu finden, etwa so:
Javascript, Actionscript:
foo.lastIndexOf('string')
PHP:
strrpos(foo,'string')
Python:
string.rfind()
und dann mit substr(ing) oder was aehnlichem den Rest mit dem Ersatzstring zu konkatenieren.
Gruss
Dieter
Hallo Ihr beiden,
ich hatte - wie der Titel sagt - an einen regulären Ausdruck gedacht.
Gruß
Norbert
Hallo Norbert
ich hatte - wie der Titel sagt - an einen regulären Ausdruck gedacht.
Im allgemeinen ist es vorzuziehen, ein Problem mit Stringfunktionen zu loesen, wenn das problemlos geht.
Aber ok, wenn du einen RegExp willst, muesstest du etwas konkreter werden, vllt. mit einem Beispiel, die Programmiersprache waere moeglicherweise auch hilfreich.
Gruss
Dieter
Hallo Dieter,
hier ein Beispiel:
Aus
aaaaaa-bbbbb-cccccc-dddddd
aaaaaa-vvvvvvv
aaaaaaaaaa-bbbbbbb-cccccccc-dddddddd-eeeeeeeee
soll werden
aaaaaa-bbbbb-cccccc#dddddd
aaaaaa#vvvvvvv
aaaaaaaaaa-bbbbbbb-cccccccc-dddddddd#eeeeeeeee
d.h. ein "-" soll ersetzt werden durch ein "#" aber nur wenn es das letzte (oder einzige) ist in einer Zeile.
Gruß
Norbert
Hi,
Aus
aaaaaa-bbbbb-cccccc-dddddd
aaaaaa-vvvvvvv
aaaaaaaaaa-bbbbbbb-cccccccc-dddddddd-eeeeeeeeesoll werden
aaaaaa-bbbbb-cccccc#dddddd
aaaaaa#vvvvvvv
aaaaaaaaaa-bbbbbbb-cccccccc-dddddddd#eeeeeeeeed.h. ein "-" soll ersetzt werden durch ein "#" aber nur wenn es das letzte (oder einzige) ist in einer Zeile.
$text = 'aaaaaa-bbbbb-cccccc-dddddd
aaaaaa-vvvvvvv
aaaaaaaaaa-bbbbbbb-cccccccc-dddddddd-eeeeeeeee';
$lines = explode("\n", $text); // ggf zu beachten: Zeilenumbruchzeichen systemabhängig!
foreach($lines as &$line) {
if(false !== $pos = strrpos($line, '-')) {
$line[$pos] = '#';
}
}
$text = implode("\n", $lines);
No regexp required.
MfG ChrisB
Hi!
ich hatte - wie der Titel sagt - an einen regulären Ausdruck gedacht.
Warum? Stringfunktionen sind in der Regel der RegExp-Maschinerie vorzuziehen. Bei einem Regexp kommt es drauf an, ob du nur einzelne Zeichen (auch mehrere lose) oder eine Zeichenkette suchst. Bei einem Zeichen ist das noch vergleichsweise einfach. Finde das Zeichen, gefolgt von allem was nicht dieses Zeichen ist, davon beliebig viele, gefolgt vom Stringende. Bei einer Zeichenfolge hilft eine negative Lookahead-Assertion.
Lo!