Zahlen mit REGEXP aus String filtern
Hallo zusammen,
es gibt zwei Möglichkeiten:
1=2E ich bin zu blöd
oder
2=2E es ist unmachbar :( *was ich nicht glaube*
Ich habe einen String wie z.B. 'dialer string 0800123456789'
Aus diesem String will ich jetzt lediglich die Nummer 0800123456789
herausfiltern...
Versucht hab ich das unteranderem mit:
regexp {(.*?)([0-9]+)} $rufnummer;
naja, in $rufnummer schreibt er leider nichts rein...
Hat von euch jemand ne Idee??
Danke und Gruß
Andy
Re: Zahlen mit REGEXP aus String filtern
Andy1407 schrieb:
> Hallo zusammen,
>
> es gibt zwei Möglichkeiten:
> 1. ich bin zu blöd
> oder
> 2. es ist unmachbar :( *was ich nicht glaube*
>
>
> Ich habe einen String wie z.B. 'dialer string 0800123456789'
> Aus diesem String will ich jetzt lediglich die Nummer 0800123456789
> herausfiltern...
>
> Versucht hab ich das unteranderem mit:
> regexp {(.*?)([0-9]+)} $rufnummer;
Was ist das denn für eine Syntax?
$string='dialer string 0800123456789';
($rufnummer) = $string =~ /(\d+)/;
print $rufnummer;
Wolf
Re: Zahlen mit REGEXP aus String filtern
On 5 Feb., 14:40, Wolf Behrenhoff
<NoSpamPleaseButThisIsVal... [at] gmx.net> wrote:
> Andy1407 schrieb:
>
> > Hallo zusammen,
>
> > es gibt zwei Möglichkeiten:
> > 1. ich bin zu blöd
> > oder
> > 2. es ist unmachbar :( *was ich nicht glaube*
>
> > Ich habe einen String wie z.B. 'dialer string 0800123456789'
> > Aus diesem String will ich jetzt lediglich die Nummer 0800123456789
> > herausfiltern...
>
> > Versucht hab ich das unteranderem mit:
> > regexp {(.*?)([0-9]+)} $rufnummer;
>
> Was ist das denn für eine Syntax?
>
> $string=3D'dialer string 0800123456789';
> ($rufnummer) =3D $string =3D~ /(\d+)/;
> print $rufnummer;
>
> Wolf
Hallo Wolf,
das ist eigentlich TCL...
aber es funktioniert fast wie Perl...
Zu deiner Lösung, es hat leider nicht geklappt...
Anscheinend ist TCL dann doch nicht ähnlich wie Perl :(
greetz
Andy
Re: Zahlen mit REGEXP aus String filtern
Andy1407 wrote:
> Anscheinend ist TCL dann doch nicht ähnlich wie Perl :(
Dann lies im Handbuch von TCL nach, wie Du einen Wert mittels Regex in
eine Variable bekommst. Die Ansätze dazu sind in den verschiedenen
Sprachen recht unterschiedlich (bequem, intuitiv). Auch von Regex selbst
gibt es zumindest 3 Hauptdialekte (Posix, Posix extended, PCRE).
Helmut Wollmersdorfer
Re: Zahlen mit REGEXP aus String filtern
Andy writes:
> On 5 Feb., 14:40, Wolf Behrenhoff
> <NoSpamPleaseButThisIsVal... [at] gmx.net> wrote:
>> Andy1407 schrieb:
>> $string='dialer string 0800123456789';
>> ($rufnummer) = $string =~ /(\d+)/;
>> print $rufnummer;
>
> das ist eigentlich TCL...
> aber es funktioniert fast wie Perl...
>
> Zu deiner Lösung, es hat leider nicht geklappt...
> Anscheinend ist TCL dann doch nicht ähnlich wie Perl :(
Würde ich auch sagen :-).
,----[ tclsh ]
| % regexp {[0-9]+} {dialer string 0800123456789} rufnummer
| 1
| % puts $rufnummer
| 0800123456789
`----
Fragen zu tcl sind in de.comp.lang.misc vermutlich besser aufgehoben.
Gruß
Andreas
Re: Zahlen mit REGEXP aus String filtern
Andy1407 wrote:
> das ist eigentlich TCL...
> aber es funktioniert fast wie Perl...
>
>
> Zu deiner Lösung, es hat leider nicht geklappt...
> Anscheinend ist TCL dann doch nicht ähnlich wie Perl :(
>
vielleicht:
set $rufnummer [regexp {[0-9]+$} $string];
(Ich kann kein TCL, nur geraten ;-)
Viele Grüße
M.
Re: Zahlen mit REGEXP aus String filtern
Andy1407 <horndasch.andreas [at] web.de> wrote:
> On 5 Feb., 14:40, Wolf Behrenhoff
> <NoSpamPleaseButThisIsVal... [at] gmx.net> wrote:
>> Andy1407 schrieb:
>> > Ich habe einen String wie z.B. 'dialer string 0800123456789'
>> > Aus diesem String will ich jetzt lediglich die Nummer 0800123456789
>> > herausfiltern...
>>
>> > Versucht hab ich das unteranderem mit:
>> > regexp {(.*?)([0-9]+)} $rufnummer;
>>
>> Was ist das denn für eine Syntax?
[..]
> das ist eigentlich TCL...
> aber es funktioniert fast wie Perl...
[..]
> Anscheinend ist TCL dann doch nicht ähnlich wie Perl :(
Lies mal die Doku von regexp (mit man oder tclhelp)...
SYNOPSIS
regexp ?switches? exp string ?matchVar? ?subMatchVar sub
MatchVar ...?
$ tclsh
% set string "dialer string 0800123456789"
dialer string 0800123456789
% regexp {\d+$} $string res
1
% echo $res
0800123456789
% ^D
Die Regex-Syntax unterscheidet sich wohl auch von der von perl. Siehe
"re_syntax".
Du bist mit sowas aber in einer anderen NG wohl besser
aufgehoben. Z.B. in de.comp.lang.misc oder comp.lang.tcl.
-dnh
--
Marketing ist die Kunst, Leuten Sachen zu verkaufen, die sie
nicht brauchen, mit Geld, was sie nicht haben, um Leute zu
beeindrucken, die sie nicht moegen.
Re: Zahlen mit REGEXP aus String filtern
Andy1407!
> Versucht hab ich das unteranderem mit:
> regexp {(.*?)([0-9]+)} $rufnummer;
Du brauchst den non-greedy Match auf alles nicht, der ist implizit.
Demnach auch die Gruppe nicht.
% regexp {[0-9]+} $rufnummer rufnummer
Und jetzt ab zu den Tclern. ;-)
Gruß
Daniel