[Dresden-pm] Regul�re Ausdr�cke - Suchen und Ersetzen von Worten

Aristoteles Pagaltzis pagaltzis at gmx.de
So Aug 24 21:47:31 PDT 2008


Hi Torsten,

darf ich dich vorab bitten, mal einen Mailclient zu verwenden der
*nicht* a) von Threading-Headern noch nie was gehört hat b) alle
Angaben zu Charsets komplett ignoriert und c) durch Ignoranz von
Quoted-Printable glänzt? Ausserdem täten ein paar Leerzeilen not,
und gerade angesichts ihrer Abwesenheit ist deine Verwendung von
POD in Mails ist zwar niedlich, aber nicht gerade leserlich.
Deine Mails zu lesen ist, mit Verlaub, eine Qual.

Ich wollte eigentlich gar nichts dazu sagen, weil das nie etwas
bringt und die Leute nur sauer und störrisch macht, wenn man ihre
Mailsoftware und -gewohnheiten kritisiert, aber da hier niemand
anders auf deine Mails antwortet, ist es denkbar, daß die einfach
abgewunken haben.

(Eine Antwort auf diesen Hinweis ist überflüssig; ich werde über
diese Tatsachenfeststellung nicht diskutieren. Du darfst den
Hinweis gern gepflegt ignorieren.)


* Torsten Knorr <create-soft at tiscali.de> [2008-08-23 07:35]:
> Aristoteles Pagaltzis Sun, 17 Aug 2008 17:24:08 +0200
>
>> Torsten Knorr: die Suche selbst noch etwas optimieren also
>> nicht /\baffe|affe klettert\b/ sondern /\baffe( klettert)?\b/.
>
>> Fasst du auch Affe und klaffen derart zusammen? Was machst du
>> aus behend, gehen und Ehe?
>
> Das "\b" steht für Wortgrenzen. Wir finden also nur Affe und
> Ehe. "Ehe" hat mit "gehen" oder "behend" nichts zu tun. Warum
> sollte ein Wort wie "gehen" dann auf ein Dokument wie
> "Ehe.html" verweisen?

Aha. Naja, bis auf die Tatsache, dass das genau gar nichts an
meiner eigentlichen Frage ändert, nur an der Form. Denn es stellt
sich immer noch die Frage, was du tust, wenn du sowohl »Affe« als
auch »der Affe hat« als Schlagwörter gegeben hast. Und was du
tust, wenn zusätzlich dazu auch noch »ein Affe ist« gegeben hast.
Wie funktioniert da das Zusammenfassen?

> Aristoteles Pagaltzis Tue, 19 Aug 2008 23:37:43 +0200
>
>> Das ist außerdem keine Lösung, denn die Ausgabe enthält
>> keinerlei Kontext.
>
> Das sollte auch gar keine Lösung sein. Zum einen ist das Ziel
> nicht eindeutig formuliert. Zum anderen habe ich bereits
> geschrieben das der Ansatz fummlig wird. Es soll lediglich
> deine Aussage:
>
> Aristotle Pagaltzis, 17 Aug 2008 17:11:08 +0200
>> Das kann man mit einem einzigen `s///`-Aufruf nicht l=3DF6sen.
>
> wiederlegen und zeigen wie mit Perls NFA alle nur möglichen
> Treffer eingesammelt werden ohne den Suchstring mit jeder
> Alternative von vorne bis hintern zu Durchackern.

Du hast gar nichts widerlegt. Daß man `(?!)` verwenden kann ist
mir schon lange bekannt, aber die Ersetzung in einem `s///`
greift nur bei einem erfolgreichen Treffer, was bedeutet, daß
die gefundenen aber mit `(?!)` verworfenen Altenativen in einem
`s///` nicht ohne hohe Umstände verwendet werden können.

> Aristoteles Pagaltzis Tue, 19 Aug 2008 23:37:43 +0200
>
>> Danach beurteilen wir die Verst=E4ndlichkeit deines
>> resultierenden Codes verglichen mit meinem. OK?
>
> Für mich ist Perl keine Sportart sondern ein Werkzeug. Zum
> korrigieren, diskutieren, weiterentwickeln, Ideen austauschen,
> oder einfach nur zum draus lernen sende ich gerne mal etwas
> Code. Zum vergleichen welcher besser ist, nein Danke!
> Entschuldige Bitte, daß ich dir helfen wollte deinen Code zu
> verbessern.

Du vergleichst nie die Lesbarkeit zweier verschiedener Code-
strecken, die dasselbe Problem lösen?

Lesbarkeit ist das zweitoberste Gut beim Programmieren. (Das
oberste ist Korrektheit.) Performance in nicht Performance-
kritischen Abschnitte des Codes ist *überhaupt kein* Gut.

Und wie Brian Kernighan mal sagte:

    Debugging is twice as hard as writing the code in
    the first place. Therefore, if you write the code
    as cleverly as possible, you are, by definition,
    not smart enough to debug it.

Entschuldige daher bitte, daß ich nicht unbedingt deiner Meinung
darüber bin, ob deine Vorschläge Verbesserungen darstellen.

>> Jedenfalls nach dem, was da steht. Vielleicht ist ja was
>> anderes gemeint.
>
> Gemeint war sicher nicht ungültiges HTML, wie ihn dein Code
> produziert.

Das ist in der Tat richtig, aber du hast zuerst die Aufgabe
umdefiniert, dann hast du davon geschrieben, wie man das Matching
durch Verwendung von `(?!)` angeblich besser lösen kann, und erst
danach hast du vom ungültigen HTML geredet.

Gruß,
-- 
Aristoteles Pagaltzis // <http://plasmasturm.org/>


Mehr Informationen über die Mailingliste Dresden-pm