[quote=pKai,22.03.2005, 19:23]bei
$var =~ s!($pattern).*\1!!;
hat das verbliebene Klammerpaar ja sogar einen Sinn.
An Meinungen zu diesem Konstrukt (vs. $pattern x 2 im RE) wäre ich interessiert.
[/quote]
Wenn es sich bei
$pattern um einen festen String handelt, dann ist es schneller, wenn man zweimal
$pattern in der Regex nutzt. (Laut einem kurzen Test ca. um den Faktor 2 schneller.)
Wenn
$pattern dagegen variable Anteile enthaelt (Wildcards, Zeichenmengen etc.), dann haben beide Varianten
verschiedene Bedeutung und sind deshalb nicht vergleichbar. Die Backreferenz
\1 enthaelt ja genau den
String, der innerhalb der ersten Klammern gematcht hat, und nicht das
Pattern, was dort steht.
Ein Beispie: Wenn
$pattern = '[a-z]' ist, dann passt
/^$pattern.*$pattern$/ auf jede Zeichenkette, die mit einem Kleinbuchstaben anfaengt und einem Kleinbuchstaben aufhoert. Dagegen passt
/^($pattern).*\1$/ nur auf diejenigen Zeichenketten, die mit
dem gleichen Kleinbuchstaben aufhoeren, mit dem sie anfangen.