|
| 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
| |
|
|