From ss5 at renormalist.net Sun Mar 1 11:25:59 2009 From: ss5 at renormalist.net (Steffen Schwigon) Date: Sun, 01 Mar 2009 20:25:59 +0100 Subject: [Dresden-pm] Dresden Perl Mongers Treffen Maerz 2009 Message-ID: Your disco needs you! Hi! Perlmongers. Dresden. Donnerstag. Wieder. Donnerstag, den 5. Maerz 2009 20.30 Uhr Straßencafé (Straße E) Werner-Hartmann-Straße 4, 01099 Dresden http://www.strassencafe.de/ Themen: * misc & etc Anfahrt, Termine, Themen immer hier: * http://dresden-pm.org/cgi-bin/twiki/view/PM/TermineTreffen Perl-, Gastronomie- und Gemütlichkeitsfans willkommen. GreetinX Steffen -- Steffen Schwigon Dresden Perl Mongers From falk.herrmann at bike24.net Thu Mar 26 06:16:50 2009 From: falk.herrmann at bike24.net (Falk Herrmann) Date: Thu, 26 Mar 2009 14:16:50 +0100 Subject: [Dresden-pm] Regex Message-ID: <49CB8042.5050205@bike24.net> Hi, hat jemand eine Idee zu regulären Ausdrücken um Leerzeichen zu entfernen, welche nur zwischen Zahlen auftreten? Bsp.: "wort1 12 34 56 wort 2" soll zu "wort1 123456 wort 2" werden. Gruß Falk. From jan at dittberner.info Thu Mar 26 07:13:24 2009 From: jan at dittberner.info (Jan Dittberner) Date: Thu, 26 Mar 2009 15:13:24 +0100 Subject: [Dresden-pm] Regex In-Reply-To: <49CB8042.5050205@bike24.net> References: <49CB8042.5050205@bike24.net> Message-ID: <20090326141324.GA4183@pneumantius.dittberner.home> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Thu, Mar 26, 2009 at 02:16:50PM +0100, Falk Herrmann wrote: > Hi, > > hat jemand eine Idee zu regul?ren Ausdr?cken um Leerzeichen zu > entfernen, welche nur zwischen Zahlen auftreten? > > Bsp.: > > "wort1 12 34 56 wort 2" > > soll zu > > "wort1 123456 wort 2" > > werden. Ich weiss nicht, ob das alle deine Faelle abdeckt oder effizient ist, aber folgendes klappt: echo "wort1 12 34 56 wort 2" | perl -pe 's/([^\d\s]\d+\s|\d+)\s*(\d)/$1$2/g' Viele Gruesse Jan -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEARECAAYFAknLjYEACgkQXZJ0m2XDVK90PgCfVvdOVDO62lrppiVTWlet5v/R D4gAoIO0Zt29dlydMJQo/nt1ogVXP48k =VjQz -----END PGP SIGNATURE----- From hd.kirmse at gmx.de Thu Mar 26 12:16:28 2009 From: hd.kirmse at gmx.de (Hans-Dietrich Kirmse) Date: Thu, 26 Mar 2009 20:16:28 +0100 Subject: [Dresden-pm] Regex In-Reply-To: <49CB8042.5050205@bike24.net> References: <49CB8042.5050205@bike24.net> Message-ID: <49CBD48C.9060700@gmx.de> Hallo Falk, ich bin leider nur ein Autodidakt und Hobbyprogrammierer und bekomme das nicht mit reg. Ausdrücken hin. ich würde deshalb zu Funktionen greifen (müssen). Falk Herrmann schrieb: > Hi, > > hat jemand eine Idee zu regulären Ausdrücken um Leerzeichen zu > entfernen, welche nur zwischen Zahlen auftreten? > > Bsp.: > > "wort1 12 34 56 wort 2" > > soll zu > > "wort1 123456 wort 2" > > werden. ich vermute mal, es sollen auch andere Anzahlen von "Zifferngruppen" auftreten können, also soetwas soll auch korrekt behandelt werden: "wort1 12 34 56 7 8 wort 2" soll zu "wort1 12345678 wort 2" werden. unter dieser Annahme würde ich folgendes Konstrukt anwenden: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #!/usr/bin/perl use warnings; use strict; my $string = "wort1 12 34 56 7 8 wort 2 4 6 22"; # damit auch eine Zifferngruppe am Ende korrekt erkannt wird, haenge # ich einfach ein Leerzeichen an $string .= ' '; # nun die Substitution $string =~ s/ ([0-9 ]+) /&myfunc($1)/ge; # das Ergebnis: "wort1 12345678 wort 24622" print $string; ######### Ende des Programms ######################### sub myfunc { my $mystring = shift; my $ergebnis = ''; my ($aktuelles_zeichen); while (length($mystring) > 0) { $aktuelles_zeichen = substr($mystring,0,1); # das ist das erste Zeichen if ($aktuelles_zeichen ne ' ') { # wenn Ziffer $ergebnis .= $aktuelles_zeichen; # die an $ergebnis anhaengen } $mystring = substr($mystring,1); # $mystring kuerzen } return ' ' . $ergebnis . ' '; } __END__ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Geht sicher viel besser, aber sollte erstmal eine Lösung sein (hoffe ich). Mit freundlichen Grüßen Hans-Dietrich From the_exot at gmx.de Thu Mar 26 13:05:25 2009 From: the_exot at gmx.de (Daniel Borchmann) Date: Thu, 26 Mar 2009 21:05:25 +0100 Subject: [Dresden-pm] Regex In-Reply-To: <49CB8042.5050205@bike24.net> References: <49CB8042.5050205@bike24.net> Message-ID: <20090326200502.GB14947@kiste> Hallo Falk, On Thu, Mar 26, 2009 at 02:16:50PM +0100, Falk Herrmann wrote: > hat jemand eine Idee zu regulären Ausdrücken um Leerzeichen zu > entfernen, welche nur zwischen Zahlen auftreten? Was hälst Du von: $ perl -pe 's/(\b\d+\b)\s+(?=\b\d+\b)/$1/g' wort1 12 34 56 wort 2 wort1 123456 wort 2 Beste Grüße Daniel From falk.herrmann at bike24.net Fri Mar 27 01:13:44 2009 From: falk.herrmann at bike24.net (Falk Herrmann) Date: Fri, 27 Mar 2009 09:13:44 +0100 Subject: [Dresden-pm] Regex In-Reply-To: <20090326200502.GB14947@kiste> References: <49CB8042.5050205@bike24.net> <20090326200502.GB14947@kiste> Message-ID: <49CC8AB8.6000907@bike24.net> Jepp. (?=...) wars. Danke Euch. Falk. Daniel Borchmann wrote: > Hallo Falk, > > On Thu, Mar 26, 2009 at 02:16:50PM +0100, Falk Herrmann wrote: >> hat jemand eine Idee zu regulären Ausdrücken um Leerzeichen zu >> entfernen, welche nur zwischen Zahlen auftreten? > Was hälst Du von: > $ perl -pe 's/(\b\d+\b)\s+(?=\b\d+\b)/$1/g' > wort1 12 34 56 wort 2 > wort1 123456 wort 2 > > Beste Grüße > Daniel > _______________________________________________ > Dresden-pm mailing list > Dresden-pm at pm.org > http://mail.pm.org/mailman/listinfo/dresden-pm > > . > From ss5 at renormalist.net Sat Mar 28 01:58:57 2009 From: ss5 at renormalist.net (Steffen Schwigon) Date: Sat, 28 Mar 2009 09:58:57 +0100 Subject: [Dresden-pm] Dresden Perl Mongers Treffen April 2009 Message-ID: Vernunft ist der neue Punk! -- TV-Werbung Hi! Perlmongers. Dresden. Kommenden Donnerstag. Donnerstag, den 2. April 2009 20.30 Uhr Straßencafé (Straße E) Werner-Hartmann-Straße 4, 01099 Dresden http://www.strassencafe.de/ Themen: * Widersprüche * Punk * misc * etc Anfahrt, Termine, Themen immer hier: * http://dresden-pm.org/cgi-bin/twiki/view/PM/TermineTreffen Perl-, Gastronomie- und Gemütlichkeitsfans willkommen. :wq GreetinX Steffen -- Steffen Schwigon Dresden Perl Mongers From create-soft at freenet.de Sat Mar 28 13:09:31 2009 From: create-soft at freenet.de (create-soft at freenet.de) Date: Sat, 28 Mar 2009 21:09:31 +0100 Subject: [Dresden-pm] Regex Message-ID: Ein Dateianhang mit HTML-Daten wurde abgetrennt... URL: -------------- nächster Teil -------------- On Thu, 26 Mar 2009, at 14:16:50, Falk Herrmann wrote: >Hi, > >hat jemand eine Idee zu regulären Ausdrücken um Leerzeichen zu >entfernen, welche nur zwischen Zahlen auftreten? > >Bsp.: > >"wort1 12 34 56 wort 2" > >soll zu > >"wort1 123456 wort 2" > >werden. > > >Gruß Falk. > #!/usr/bin/perl -w #*** test_lookaround.pl ***# #------------------------------------------------- use strict; #------------------------------------------------- my $str = "1 2 3 1.wort1 12 34 56 tab 1 \t\t 2 tab 2.wort 2 das 3.wort24 1 2 3 4 endline 1 \n\n\n 2 beginline2 1 1 1 1 10 4"; $str =~ s{(?:(?:\A)|(?<=\s))([\d ]+)(?:(?=\s)|(?:\z))}{join'',split/ /,$1}eg; print("$str\n"); #------------------------------------------------- Gruß Torsten Heute schon ge"freeMail"t? Jetzt kostenlose E-Mail-Adresse sichern! http://email.freenet.de/dienste/emailoffice/produktuebersicht/basic/mail/index.html?pid=6831 From create-soft at freenet.de Mon Mar 30 11:34:27 2009 From: create-soft at freenet.de (create-soft at freenet.de) Date: Mon, 30 Mar 2009 20:34:27 +0200 Subject: [Dresden-pm] Regex Message-ID: Ein Dateianhang mit HTML-Daten wurde abgetrennt... URL: -------------- nächster Teil -------------- On Sat, 28 Mar 2009, at 21:09:31, create-soft at freenet.de wrote: >On Thu, 26 Mar 2009, at 14:16:50, Falk Herrmann wrote: >Hi, > >hat jemand eine Idee zu regulären Ausdrücken um Leerzeichen zu >entfernen, welche nur zwischen Zahlen auftreten? > >Bsp.: > >"wort1 12 34 56 wort 2" > >soll zu > >"wort1 123456 wort 2" > >werden. > > >Gruß Falk. > >#!/usr/bin/perl -w >#*** test_lookaround.pl ***# >#------------------------------------------------- > use strict; >#------------------------------------------------- > my $str = "1 2 3 1.wort1 12 34 56 tab 1 \t\t 2 tab 2.wort 2 das 3.wort24 1 2 3 4 endline 1 \n\n\n 2 beginline2 1 1 1 1 10 4"; > $str =~ s{(?:(?:\A)|(?<=\s))([\d ]+)(?:(?=\s)|(?:\z))}{join'',split/ /,$1}eg; > print("$str\n"); >#------------------------------------------------- > Gruß Torsten So '([\d ]+)' gehts nicht!!! Paßt auch auf Leeerzeichen die keine Zahlen enthalten und umgekehrt. Also so '(\d+ [\d ]*\d)'. #!/usr/bin/perl -w #*** test_lookaround2.pl ***# #------------------------------------------------- use strict; #------------------------------------------------- my $str = "1 2 3 4.wort_5 6 7 8 space:' ' tab'\t12 34 56\t' newline:'\n44 55 66\n' 22 10 20 30 4"; print("$str\n"); $str =~ s{(?:\A|(?<=\s))(\d+ [\d ]*\d)(?=\s|\z)}{join'',split/ /,$1}eg; print("$str\n"); #------------------------------------------------- Torsten Gratis: Jeden Monat 3 SMS versenden- Mit freenetMail - Ihrer kostenlose E-Mail-Adresse http://email.freenet.de/dienste/emailoffice/produktuebersicht/basic/sms/index.html?pid=6830