Hallo, Am Fre, 08 Aug 2008, Heinz W. Pahlke schrieb:
On 31-Jul-2008 David Haller wrote:
Versuch's mit '<p *class=.*?>'. Ansonsten: <p *class=[^>]*>
Das erste funktionierte nicht, wohl aber das zweite.
Bloss das WIE wuerde mich jetzt noch interessieren.
Warum kommt hier * ohne . zum Einsatz? Mit ^wird sonst der Zeilenanfang gekennzeichnet. Hier nehme ich an, dass damit das erste Auftreten von > gemeint ist. Aber warum dann noch *>?
Sandy hat das wichtigste schon geschrieben... Der erste Ausdruck ist ein "non-greedy" Ausdruck á la perl, den vim anscheinend nicht versteht. Das angefügte ? nach dem * bedeutet, daß das kürzest-passende Match genommen werden soll. ==== perldoc perlre ==== If you want it to match the minimum number of times possible, follow the quantifier with a "?". Note that the meanings don't change, just the "greediness": *? Match 0 or more times +? Match 1 or more times ?? Match 0 or 1 time ==== Der zweite Ausdruck ist dann die Variante, wenn man keinen 'non-greedy-modifier' zur Verfügung hat. Es bedeutet: <p die Zeichenkette "<p" * beliebig viele Leerzeichen (eigentlich ein Fehler hier, das müßte entweder " +" oder " *" sein ;) class= die literale Zeichenkette [^>] eine negierte Zeichenklasse, hier nur aus einem Zeichen bestehend, und der Bedeutung: jedes Zeichen außer ">" * und diese beliebig oft, also beliebig oft alles außer ">".
und ein literales ">"
Kurz: das ganze Muster passt von <p bis zu _nächsten_ >. Alles relevante steht in 'man 7 regex', vim verwendet soweit ich weiß die "extended regular expressions" wie egrep. Man kann sich außer in Sonderfällen (v.a. in perl) eigentlich immer so wie oben demonstriert zeichenweise durch die Regex wühlen...
Perl is bei sowas aber recht praktisch. Muster:
perl -pi.orig -e 's/<p\s*class.*?>/<p>/' *.html
Es waere bestimmt nicht verkehrt, sich mal mit Perl zu beschaeftigen, aber das Einsteigerbuch, das ich mir vor langem gekauft habe, steht und steht und verstaubt ... Zeit muesste man haben.
Wie war das noch? "Wenn der 24-Stunden Tag nicht reicht nehmen wir eben noch die Nacht dazu..."? Naja, sich mit perl zu beschäftigen lohnt sich IMO :) HTH, -dnh -- Sorry, mit java kenne ich mich gar nicht aus, das ist mir einfach zu unportabel. -- Thorsten Kukuk in suse-linux -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org