/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
Regular Expression
Fra : Michael


Dato : 30-03-01 10:58

Jeg har et spørgsmål vedrørende regular expression tror jeg nok det heder.

Jeg har lavet disse to hvor den ene fjerner et evt. space i starten ef en
linie og den anden fjerner lige så et space i den anden ende, mit spørgsmål
lyder; er det ikke muligt at skrive det i én linie? jow, men hvordan?

$_ =~ /^\s//;
$_ =~ /$\s//;

--
/md



 
 
Peter Makholm (30-03-2001)
Kommentar
Fra : Peter Makholm


Dato : 30-03-01 11:15

"Michael" <michael@danfamily.org> writes:

> Jeg har lavet disse to hvor den ene fjerner et evt. space i starten ef en
> linie og den anden fjerner lige så et space i den anden ende, mit spørgsmål
> lyder; er det ikke muligt at skrive det i én linie? jow, men hvordan?

Virker følgende:

s/^\s?(.*?)\s?$/$1/;

Michael (30-03-2001)
Kommentar
Fra : Michael


Dato : 30-03-01 11:21

> Virker følgende: s/^\s?(.*?)\s?$/$1/;
Jep, kanon, tak skal du havde.
Nu skal jeg bare i gang med at tyde det - jeg er ny i Perl verdenen -

/md





e96mani@yahoo.dk (30-03-2001)
Kommentar
Fra : e96mani@yahoo.dk


Dato : 30-03-01 21:16

"Michael" <michael@danfamily.org> wrote in message
news:LMYw6.275$o4.32325@news010.worldonline.dk...
> Jeg har et spørgsmål vedrørende regular expression tror jeg nok det heder.

jah, eller bare regex for at gør det kortere

>
> Jeg har lavet disse to hvor den ene fjerner et evt. space i starten ef en
> linie og den anden fjerner lige så et space i den anden ende, mit
spørgsmål
> lyder; er det ikke muligt at skrive det i én linie? jow, men hvordan?
>
> $_ =~ /^\s//;
> $_ =~ /$\s//;
^^
du skal bytte om på de to.

ved at bruge alternation '|' :

$_ =~ /^\s|\s$//;





e96mani@yahoo.dk (31-03-2001)
Kommentar
Fra : e96mani@yahoo.dk


Dato : 31-03-01 01:09

> ved at bruge alternation '|' :
>
> $_ =~ /^\s|\s$//;

lig en tilføgelse: den skulle selvfølgelig være med /g modifer'en, altså:

$_ =~ /^\s|\s$//g;
print ;



Trond Michelsen (30-03-2001)
Kommentar
Fra : Trond Michelsen


Dato : 30-03-01 14:43


"Michael" <michael@danfamily.org> wrote in message
news:LMYw6.275$o4.32325@news010.worldonline.dk...
> Jeg har et spørgsmål vedrørende regular expression tror jeg nok det
heder.
>
> Jeg har lavet disse to hvor den ene fjerner et evt. space i starten ef
en
> linie og den anden fjerner lige så et space i den anden ende, mit
spørgsmål
> lyder; er det ikke muligt at skrive det i én linie? jow, men hvordan?
>
> $_ =~ /^\s//;
> $_ =~ /$\s//;

$ perldoc -q beginning
=head1 Found in /local/perl/5.005/lib/pod/perlfaq4.pod

=head2 How do I strip blank space from the beginning/end of a string?

Although the simplest approach would seem to be:

$string =~ s/^\s*(.*?)\s*$/$1/;

This is unnecessarily slow, destructive, and fails with embedded
newlines.
It is much better faster to do this in two steps:

$string =~ s/^\s+//;
$string =~ s/\s+$//;

Or more nicely written as:

for ($string) {
s/^\s+//;
s/\s+$//;
}

This idiom takes advantage of the C<foreach> loop's aliasing
behavior to factor out common code. You can do this
on several strings at once, or arrays, or even the
values of a hash if you use a slide:

# trim whitespace in the scalar, the array,
# and all the values in the hash
foreach ($scalar, @array, @hash{keys %hash}) {
s/^\s+//;
s/\s+$//;
}

--
Trond Michelsen



Søg
Reklame
Statistik
Spørgsmål : 177547
Tips : 31968
Nyheder : 719565
Indlæg : 6408797
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste