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
Andy1407 [ Mo, 05 Februar 2007 14:11 ] [ ID #1619690 ]

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
Wolf Behrenhoff [ Mo, 05 Februar 2007 14:40 ] [ ID #1619692 ]

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
Andy1407 [ Mo, 05 Februar 2007 15:02 ] [ ID #1619693 ]

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
Helmut Wollmersdorfer [ Mo, 05 Februar 2007 15:12 ] [ ID #1619695 ]

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
Andreas Seltenreich [ Mo, 05 Februar 2007 15:13 ] [ ID #1619696 ]

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.
Mirco Wahab [ Mo, 05 Februar 2007 15:15 ] [ ID #1619697 ]

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.
David Haller [ Mo, 05 Februar 2007 16:52 ] [ ID #1619698 ]

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
Daniel Fischer [ Mo, 05 Februar 2007 18:08 ] [ ID #1619699 ]
Perl » de.comp.lang.perl.misc » Zahlen mit REGEXP aus String filtern

Vorheriges Thema: Primzahl erstellen mittels Crypt::Primes
Nächstes Thema: Archive::Zip, irgendwelche Groessenbeschraenkungen bekannt?