mal wieder: reguläre Ausdrücke (slightly OT)
Liebe Liste, ich habe hier eine Diss., die ich für den deGruyter-Verlag formatieren soll (nach deren .dot-Template). Im (wie bei Diss. heutzutage üblich 30 seitigen) Literaturverzeichnis stehen alle Angaben so: ---schnipp--- Eiselen, W M [1934] 1967Christianity and the religious life of the Bantu. In Schapera, I (ed), Western civilization and the natives of South Africa. London: Routledge and Kegan Paul. ---schnapp--- Nun sollen die Initialen der Vornamen mit Punkten versehen werden, also Eiselen, W. M. Dazu habe ich das Verzeichnis als txt-File mit Zeilenumbrüchen gespeichert und im vim :1,$s/\([A-Z]\) /\1. /g geschrieben. Jetzt macht er das komischerweise passim, also an manchen Stellen ja, an anderen nicht (insg. 331mal) Ich kann auch kein Muster ausmachen, a la, er ersetzt nur den 1. aber nicht den 2. oder dergleichen Dann dachte ich noch an die DOS ^Ms, obwohl ich nicht sehe, wo die hier stören sollten. Da ich die eh auch aus meinen html-Dateien raushaben wollte, habe ich sie mit find . -name *.* -exec perl -pi -e 's/\r\n/\n/' {} \; rausgeschmissen. less -u zeigt also nichts mehr an, am ergebnis ändert sich natürlich nichts. Mit anderen Worten: ich habe keine Ahnung. Liegt der Fehler bei mir (dann müsste ich aber m.E. irgendein Muster bei den nicht gematchten Fällen ausmachen können) oder ist da noch irgendein Windows-Zeugs im Spiel? Weiß jemand Rat? thanks in advance Gebhard p.s. wenn ich auf dem Uni-Webserver html-Dateien im vi editiere, sehe ich ^Ms, bei mir lokal aber nicht. Gibt's irgendwo in der .exrc dazu eine Option a la: set dos carriage returns visible? (Finde bei google nur, wie man sie löscht, nicht wie man sie sichtbar macht)
reguläre Ausdrücke
Hallo Hab mich gerade etwas mit den regulären Ausdrücken beschäftigt. Nur blick ich da nicht ganz daurch. Also suchen geht schon halbwegs aber auch nur Zeilenweise mit grep. Habs auch im vi mit Google versucht aber den check ich nicht. Mein Problem ist das ich nem html File gewisse Formatierungen löschen will und es zu mühsam ist das ganze file (160kB) durchzussehen. Das konkrete Promlem sieht so aus: font class=xya href=link#sprungmarkeText/a/font Dieser Eintrag kommt X-mal vor und sieht bis auf die Sprungmarke und den Text identisch aus. Wie schaff ich es nun das jeweils mit nur dem Text zu ersetzen. ciao Toni -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: reguläre Ausdrücke
Toni wrote: Hallo Hab mich gerade etwas mit den regulären Ausdrücken beschäftigt. Nur blick ich da nicht ganz daurch. Also suchen geht schon halbwegs aber auch nur Zeilenweise mit grep. Habs auch im vi mit Google versucht aber den check ich nicht. Mein Problem ist das ich nem html File gewisse Formatierungen löschen will und es zu mühsam ist das ganze file (160kB) durchzussehen. Das konkrete Promlem sieht so aus: font class=xya href=link#sprungmarkeText/a/font Dieser Eintrag kommt X-mal vor und sieht bis auf die Sprungmarke und den Text identisch aus. Wie schaff ich es nun das jeweils mit nur dem Text zu ersetzen. ciao Toni Wie wäre es mit :%s/font class=xya href=link#.*\(.*\)\/a\/font/\1/ in vim. (keine garantie). Gruss Michael -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: reguläre Ausdrücke
On Saturday 05 June 2004 14:23, Michael Kebe wrote: Toni wrote: Hallo Hab mich gerade etwas mit den regulären Ausdrücken beschäftigt. Nur blick ich da nicht ganz daurch. Also suchen geht schon halbwegs aber auch nur Zeilenweise mit grep. Habs auch im vi mit Google versucht aber den check ich nicht. Mein Problem ist das ich nem html File gewisse Formatierungen löschen will und es zu mühsam ist das ganze file (160kB) durchzussehen. Das konkrete Promlem sieht so aus: font class=xya href=link#sprungmarkeText/a/font Dieser Eintrag kommt X-mal vor und sieht bis auf die Sprungmarke und den Text identisch aus. Wie schaff ich es nun das jeweils mit nur dem Text zu ersetzen. ciao Toni quanta+ kann so etwas auch, wie ein Textverarbeitungsprogramm Klaus
[SOLVED] reguläre Ausdrücke
Klaus Becker schrieb: On Saturday 05 June 2004 14:23, Michael Kebe wrote: Toni wrote: Hallo Hab mich gerade etwas mit den regulären Ausdrücken beschäftigt. Nur blick ich da nicht ganz daurch. Also suchen geht schon halbwegs aber auch nur Zeilenweise mit grep. Habs auch im vi mit Google versucht aber den check ich nicht. Mein Problem ist das ich nem html File gewisse Formatierungen löschen will und es zu mühsam ist das ganze file (160kB) durchzussehen. Das konkrete Promlem sieht so aus: font class=xya href=link#sprungmarkeText/a/font Dieser Eintrag kommt X-mal vor und sieht bis auf die Sprungmarke und den Text identisch aus. Wie schaff ich es nun das jeweils mit nur dem Text zu ersetzen. ciao Toni quanta+ kann so etwas auch, wie ein Textverarbeitungsprogramm Klaus Ich glaub den quanta+ werd ich mir mal anschauen so oft wie der schon empfohlen wurde ;o) Die Lösung funkt (mitunter) mit: sed -e 's/font class=xya href=link#.*\(.*\)\/a\/font/\1/' Danke an alle ciao Toni -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: [SOLVED] reguläre Ausdrücke
Am Samstag 05 Juni 2004 14:45 schrieb Toni: sed -e 's/font class=xya href=link#.*\(.*\)\/a\/font/\1/' sed ist sicher die beste Wahl - alternativ könntest du auch xsltproc verwenden. Das ist aber in Quanta integriert... Gruß rUdi
Re: (mal wieder) reguläre Ausdrücke
Thorsten Haude schrieb: Moin, * Julius Plenz wrote (2004-02-22 21:07): * Thorsten Haude [EMAIL PROTECTED] wrote: Das würde alles zwischen der ersten und letzten Klammer löschen. So besser? 510,pts/8,0,[home/julius]$ cat test | sed -e 's/\[[^]]*\]//g' Hallo, das ist ein Und auch mal ein Leerzeichen sollte nicht fehlen. Hm, scheinbar hat's ja auch beim ersten mal funktioniert, ich würde mich halt nur nicht darauf verlassen wollen. Hi! Soweit ich weiss, matcht der Punkt nicht auf ein \n, und damit ging es im ersten Beispiel trotzdem, da dort nur ein Klammernpaar pro Zeile auftrat Grüße Christoph -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: (mal wieder) reguläre Ausdrücke
Moin, Schick mir doch bitte jede Mail nur einmal. Thorsten -- Golly, I'd hate to have a kid like me! - Calvin pgp0.pgp Description: PGP signature
Re: (mal wieder) reguläre Ausdrücke
Thorsten Haude schrieb: Moin, Schick mir doch bitte jede Mail nur einmal. Eigentlich schicke ich nur an die Liste, hatte mich leider 'verklickst'... Sorry :-) Grüße Christoph (f'up falls nötig) -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
(mal wieder) reguläre Ausdrücke
Liebe DebianerInnen, ich möchte einen Text, den ich mit in eckigen Klammern eingefügtem Kommentar versehen habe, in einen text einfügen, aber ohne den Kommentar. Der text soll also von allen Vorkommnissen a la [hier steht Text], [hier auch] etc. befreit werden. Im VI schreibe ich dann :g/[/s/[a-zA-Z]\{1,90\}//g was mache ich hier falsch? Dann habe ich es noch mit sed probiert sed 's/\[.*]//g' myfile newfile + div. Varianten mit und ohne Escapezeichen vor [ und angepassten Beispielen aus Andreas Schmidts Beitrag vom 27. Januar http://www.mail-archive.com/[EMAIL PROTECTED]/msg682 44.html Hab's nicht zustande gebracht ;-( Ich will also, wie gesagt, eine beliebige Zeichenkette, die beliebig oft auftaucht und nur dadurch beschränkt ist, dass sie in eckigen Klammern stehen muss, löschen. Für Hinweise dankt gebhard -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: (mal wieder) reguläre Ausdrücke
* Gebhard Dettmar [EMAIL PROTECTED] wrote: Liebe DebianerInnen, ich möchte einen Text, den ich mit in eckigen Klammern eingefügtem Kommentar versehen habe, in einen text einfügen, aber ohne den Kommentar. Der text soll also von allen Vorkommnissen a la [hier steht Text], [hier auch] etc. befreit werden. Im VI schreibe ich dann :g/[/s/[a-zA-Z]\{1,90\}//g was mache ich hier falsch? Dann habe ich es noch mit sed probiert sed 's/\[.*]//g' myfile newfile + div. Varianten mit und ohne Escapezeichen vor [ und angepassten Beispielen aus Andreas Schmidts Beitrag vom 27. Januar http://www.mail-archive.com/[EMAIL PROTECTED]/msg682 44.html Hab's nicht zustande gebracht ;-( Ich will also, wie gesagt, eine beliebige Zeichenkette, die beliebig oft auftaucht und nur dadurch beschränkt ist, dass sie in eckigen Klammern stehen muss, löschen. Mal davon ausgehend, dass ich dich nicht falsch verstanden habe, sollte folgendes für Dich funktionieren: 508,pts/8,0,[home/julius]$ cat test Hallo, das ist ein [Test] Und auch mal ein [Test mit] Leerzeichen sollte nicht fehlen. 509,pts/8,0,[home/julius]$ cat test | sed -e 's/\[.*\]//g' Hallo, das ist ein Und auch mal ein Leerzeichen sollte nicht fehlen. Vielleicht ist das genau das, was Du willst. gebhard Julius -- Julius Plenz, [EMAIL PROTECTED] HP: plenz.com ICQ#129455376 PGP: 0x186DCA0D lynx -dump plenz.com/pgpkey | grep -v ' Get ' | sed '0,2d' | gpg --import whois plenz.com | sed 's/\[a.*\] //'| egrep '^([fl]n|add|em|c[io]|p[^r])' Das Licht am Ende des Tunnels ist ein entgegenkommender Zug. (Unbekannt) -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: (mal wieder) reguläre Ausdrücke
Hallo Gebhard, On Sun, Feb 22, 2004 at 08:48:39PM +0100, Gebhard Dettmar wrote: Liebe DebianerInnen, ich möchte einen Text, den ich mit in eckigen Klammern eingefügtem Kommentar versehen habe, in einen text einfügen, aber ohne den Kommentar. Der text soll also von allen Vorkommnissen a la [hier steht Text], [hier auch] etc. befreit werden. Im VI schreibe ich dann :g/[/s/[a-zA-Z]\{1,90\}//g was mache ich hier falsch? Dann habe ich es noch mit sed probiert sed 's/\[.*]//g' myfile newfile + div. Varianten mit und ohne Escapezeichen vor [ sed 's/\[.*\]//g' myfile newfile ^ Hast Du die schießende Klammer auch escaped in einem Deiner Versuche? und angepassten Beispielen aus Andreas Schmidts Beitrag vom 27. Januar http://www.mail-archive.com/[EMAIL PROTECTED]/msg682 44.html Hab's nicht zustande gebracht ;-( Ich will also, wie gesagt, eine beliebige Zeichenkette, die beliebig oft auftaucht und nur dadurch beschränkt ist, dass sie in eckigen Klammern stehen muss, löschen. Für Hinweise dankt gebhard Grüße Mathias signature.asc Description: Digital signature
Re: (mal wieder) reguläre Ausdrücke
Moin, * Julius Plenz wrote (2004-02-22 20:55): ich möchte einen Text, den ich mit in eckigen Klammern eingefügtem Kommentar versehen habe, in einen text einfügen, aber ohne den Kommentar. Der text soll also von allen Vorkommnissen a la [hier steht Text], [hier auch] etc. befreit werden. Mal davon ausgehend, dass ich dich nicht falsch verstanden habe, sollte folgendes für Dich funktionieren: 508,pts/8,0,[home/julius]$ cat test Hallo, das ist ein [Test] Und auch mal ein [Test mit] Leerzeichen sollte nicht fehlen. 509,pts/8,0,[home/julius]$ cat test | sed -e 's/\[.*\]//g' Hallo, das ist ein Und auch mal ein Leerzeichen sollte nicht fehlen. Vielleicht ist das genau das, was Du willst. Das würde alles zwischen der ersten und letzten Klammer löschen. Thorsten -- If you have any trouble sounding condescending, find a Unix user to show you how it is done. - Scott Adams pgp0.pgp Description: PGP signature
Re: (mal wieder) reguläre Ausdrücke
* Thorsten Haude [EMAIL PROTECTED] wrote: Moin, * Julius Plenz wrote (2004-02-22 20:55): ich möchte einen Text, den ich mit in eckigen Klammern eingefügtem Kommentar versehen habe, in einen text einfügen, aber ohne den Kommentar. Der text soll also von allen Vorkommnissen a la [hier steht Text], [hier auch] etc. befreit werden. Mal davon ausgehend, dass ich dich nicht falsch verstanden habe, sollte folgendes für Dich funktionieren: 508,pts/8,0,[home/julius]$ cat test Hallo, das ist ein [Test] Und auch mal ein [Test mit] Leerzeichen sollte nicht fehlen. 509,pts/8,0,[home/julius]$ cat test | sed -e 's/\[.*\]//g' Hallo, das ist ein Und auch mal ein Leerzeichen sollte nicht fehlen. Vielleicht ist das genau das, was Du willst. Das würde alles zwischen der ersten und letzten Klammer löschen. So besser? 510,pts/8,0,[home/julius]$ cat test | sed -e 's/\[[^]]*\]//g' Hallo, das ist ein Und auch mal ein Leerzeichen sollte nicht fehlen. Thorsten Julius -- Julius Plenz, [EMAIL PROTECTED] HP: plenz.com ICQ#129455376 PGP: 0x186DCA0D lynx -dump plenz.com/pgpkey | grep -v ' Get ' | sed '0,2d' | gpg --import whois plenz.com | sed 's/\[a.*\] //'| egrep '^([fl]n|add|em|c[io]|p[^r])' Das Licht am Ende des Tunnels ist ein entgegenkommender Zug. (Unbekannt) signature.asc Description: Digital signature
WG: (mal wieder) reguläre Ausdrücke
Hallo! Liebe DebianerInnen, ich möchte einen Text, den ich mit in eckigen Klammern eingefügtem Kommentar versehen habe, in einen text einfügen, aber ohne den Kommentar. Der text soll also von allen Vorkommnissen a la [hier steht Text], [hier auch] etc. befreit werden. Im VI schreibe ich dann :g/[/s/[a-zA-Z]\{1,90\}//g was mache ich hier falsch? Dann habe ich es noch mit sed probiert sed 's/\[.*]//g' myfile newfile + div. Varianten mit und ohne Escapezeichen vor [ und angepassten Beispielen aus Andreas Schmidts Beitrag vom 27. Januar http://www.mail-archive.com/[EMAIL PROTECTED]/msg682 44.html Hab's nicht zustande gebracht ;-( Ich will also, wie gesagt, eine beliebige Zeichenkette, die beliebig oft auftaucht und nur dadurch beschränkt ist, dass sie in eckigen Klammern stehen muss, löschen. Für Hinweise dankt Gebhard Probier mal s/\[\s*[\w+\s*]+\s*\]//g (und noch den zeilenumbruchswitch, s glaub ich) -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl) -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: (mal wieder) reguläre Ausdrücke
Moin, * Julius Plenz wrote (2004-02-22 21:07): * Thorsten Haude [EMAIL PROTECTED] wrote: Das würde alles zwischen der ersten und letzten Klammer löschen. So besser? 510,pts/8,0,[home/julius]$ cat test | sed -e 's/\[[^]]*\]//g' Hallo, das ist ein Und auch mal ein Leerzeichen sollte nicht fehlen. Hm, scheinbar hat's ja auch beim ersten mal funktioniert, ich würde mich halt nur nicht darauf verlassen wollen. Thorsten -- If people had understood how patents would be granted when most of today's ideas were invented and had taken out patents, the industry would be at a complete stand-still today. - Bill Gates pgp0.pgp Description: PGP signature
Re: (mal wieder) reguläre Ausdrücke
hi Dettmar, Am Sonntag, 22. Februar 2004 20.48 schrieb Gebhard Dettmar: Liebe DebianerInnen, ich möchte einen Text, den ich mit in eckigen Klammern eingefügtem Kommentar versehen habe, in einen text einfügen, aber ohne den Kommentar. Der text soll also von allen Vorkommnissen a la [hier steht Text], [hier auch] etc. befreit werden. ich würde für das von anfang an perl benutzten ;-]] hier ein funktionierendes script : #!/usr/bin/perl while(){ $text .= $_ } $text =~ s/\[[^]]*\]//mg; print $text; wichtig für die linien-übergreifenden substitutes ist das multiline flag, und dass der ganze text (alle linien) in einem schubs an die regex übergeben werden. cheers jan -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: OT Perl reguläre Ausdrücke
Jan Trippler schrieb am 18.02.2003 21:08: On Die, 18 Feb 2003 at 00:33 (+0100), Mario Duve wrote: Hallo, Wie könnte ich folgenden Regulären Ausdruck erweitern, damit nicht z.B. 432.444.259.666 eigegeben werden kann? Also größer gleich 1, kleiner gleich 254 code if ($ip =~ /^(\d{1,3}\.){3}\d{1,3}$/) { return 1; } else { return 0; } - Wie schon geschrieben: Mit RE wohl nicht zu machen. Meine Variante: my $rc = 0; foreach (split /\./, $ip) { $rc = 1 unless ($_ 255) == $_ and $_; } Jan geht schon mit regex: if ($ip =~ m/^(\d|[01]?\d\d|2[0-4]\d|25[0-5])\. (\d|[01]?\d\d|2[0-4]\d|25[0-5])\. (\d|[01]?\d\d|2[0-4]\d|25[0-5])\. (\d|[01]?\d\d|2[0-4]\d|25[0-5])$/) { print \n\nIP = $IP ist eine gültige IP\n; } (Bedingungsanteil alles in einer Zeile, oder \CR) -hth -Jörg -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: OT Perl reguläre Ausdrücke
On Die, 18 Feb 2003 at 00:33 (+0100), Mario Duve wrote: Hallo, Wie könnte ich folgenden Regulären Ausdruck erweitern, damit nicht z.B. 432.444.259.666 eigegeben werden kann? Also größer gleich 1, kleiner gleich 254 code if ($ip =~ /^(\d{1,3}\.){3}\d{1,3}$/) { return 1; } else { return 0; } - Wie schon geschrieben: Mit RE wohl nicht zu machen. Meine Variante: my $rc = 0; foreach (split /\./, $ip) { $rc = 1 unless ($_ 255) == $_ and $_; } Jan -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
OT Perl reguläre Ausdrücke
Hallo, Wie könnte ich folgenden Regulären Ausdruck erweitern, damit nicht z.B. 432.444.259.666 eigegeben werden kann? Also größer gleich 1, kleiner gleich 254 code if ($ip =~ /^(\d{1,3}\.){3}\d{1,3}$/) { return 1; } else { return 0; } - Gruss, Mario -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: OT Perl reguläre Ausdrücke
Wie könnte ich folgenden Regulären Ausdruck erweitern, damit nicht z.B. 432.444.259.666 eigegeben werden kann? Also größer gleich 1, kleiner gleich 254 code if ($ip =~ /^(\d{1,3}\.){3}\d{1,3}$/) { return 1; } else { return 0; } - Das kannst du leider fast vergessen. Wenn du prüfen willst, ob eine IP-Adresse gültig ist oder in einem bestimmten Bereich liegt, dann prüfe lieber jedes Byte einzeln oder benutze Net::Netmask. Alternativ: for my $byte ( split(/\./, $ip) ) { return 0 if $byte 1 or $byte 255; } return 1; Gruß, Christoph -- ~ ~ .signature [Modified] 3 lines --100%--3,41 All -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)