sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #79236
Re: Regex sp. -Igen igen :)
"Michael Schmidt" <m.schmidt@xxxxxxxx> writes:
> On Mon, 3 Jan 2005 17:57:34 +0100, Hans Schou <chlor@xxxxxxxx> wrote:
>
> > On Mon, 3 Jan 2005, Peter Makholm wrote:
> >
> >> perl -pe 's/./\t/' testfil
> >
> > Nu ved jeg ikke om opgaven kun var at skifte det førstkommende punktum
> > ud
> Det var det helt specifikt.
> Og jeg kan nu (hvor det er blevet gjort for mig) se hvordan den simple
> ikke-grådige substitution var indlysende.
> Det er ikke aktuelt, men jeg kan alligevel ikke lade være med at
> fundere over hvordan det så gøres hvis det var præsis n'te forekomst
> af et specielt tegn...
Helt generelt (erstat <n-1> med værdien af n-1):
perl -pe 's/((.*?\.){<n-1>})(.*?)\./$1$3\t/'
(.*? kan evt. udskiftes med [^\.]*, det bliver muligvis endda en smule
hurtigere af det).
Men, indrømmet, det er ikke helt trivielt.
Oftest vil man kunne bruge noget mindre generelt, hvis man f.eks. ved at
n=3:
perl -pe 's/(.*?\..*?\..*?)\./$1\t/'
(Igen vil [^\.]* sikkert være hurtigere end .*? - men ikke lige så kort
og kryptisk).
.Henrik
--
Jacob: Because the theoreticians told me.
Prof. Vassilicos: Why do you believe theoreticians?
References