Zahlen mit REGEXP aus String filtern

Zahlen mit REGEXP aus String filtern

am 05.02.2007 14:11:23 von Andy1407

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;


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

am 05.02.2007 14:40:40 von Wolf Behrenhoff

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

am 05.02.2007 15:02:50 von Andy1407

On 5 Feb., 14:40, Wolf Behrenhoff
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

am 05.02.2007 15:12:39 von Helmut Wollmersdorfer

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

am 05.02.2007 15:13:40 von Andreas Seltenreich

Andy writes:

> On 5 Feb., 14:40, Wolf Behrenhoff
> 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

am 05.02.2007 15:15:28 von Mirco Wahab

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

am 05.02.2007 16:52:33 von David Haller

Andy1407 wrote:
> On 5 Feb., 14:40, Wolf Behrenhoff
> 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

am 05.02.2007 18:08:37 von Daniel Fischer

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