[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [RFR] man://manpages-l10n/regex.7.po (2/2)



Hoi.

[2023-05-05 16:57] Helge Kreutzmann <debian@helgefjell.de>
> On Fri, May 05, 2023 at 04:28:18PM +0200, markus schnalke wrote:
> > [2023-05-05 16:11] Helge Kreutzmann <debian@helgefjell.de>
> > > On Fri, May 05, 2023 at 09:22:24AM +0200, markus schnalke wrote:
> > > > > wird als länger als keine "
> > > > > "Übereinstimmung betrachtet. Beispielsweise stimmt »I<bb*>« mit den drei "
> > > > > "mittleren Zeichen von »abbbc« überein, »I<(wee|week)(knights|nights)> stimmt "
> > > > > "mit allen zehn Zeichen von »weeknights« überein. Wird »I<(.*).*>« mit »abc« "
> > > > > "verglichen,
> > > > 
> > > > ``... auf ... angewendet''. Vergleich finde ich ein unpassendes
> > > > Wort, weil keine Gleichheit geprueft wird.
> > > 
> > > Mir ist leider nicht klar, was Du hiergeändert haben möchtest. Das
> > > Wort „angewendet“ habe ich gar nicht verwandt?
> > 
> > Ja, da war mein Kommentar etwas zu kryptisch. ;-)
> > 
> > Du hast geschrieben, dass eine RE mit einem String verglichen wird.
> > Das finde ich inhaltlich unpassend, weil man REs und Strings IMO
> > nicht vergleichen kann, sondern eine RE *matcht* auf einen String.
> 
> Ich finde vergleichen schon passend, und „match“ ist eine Übersetzung
> für vergleichen. Nur kein binärer Vergleich (ja/nein), sondern einer,
> der eine Zeichnenkette zurückliefert.
> 
> > Folglich sollte der Satz lauten: ``Wird »I<(.*).*>« auf »abc«
> > angewendet, ...'' (oder etwas in der Art).
> 
> D.h. Du fasst die regulären Ausdrücke als eine Art Funktion auf? Das
> wäre dann freier übersetzt.
> 
> Muss ich kurz drüber nachdenken.

Ich will meine Gedanken dazu nochmal genauer erklaeren:

Vergleichen fusst auf Gleichheit. Gleich koennen nur gleichartige
Dinge sein.

REs und Strings sind sehr verschiedenartige Dinge. Strings sind
reine Zeichenfolgen. REs dagegen sind Beschreibungen von Mengen von
Zeichenketten. Ich bin kein Sprachwissenschaftler, darum bin ich
hier vielleicht ungenau: eine konkrete RE definiert alle Woerter
einer Sprache. Die jeweiligen Strings, die darauf matchen, sind
somit Teil dieser Sprache.

Um es mal in ein anderes Feld zu uebertragen: Der obige Satz
dann lauten: ``Wird die Deutsche Sprache mit dem Wort `Haus'
verglichen, ...'' Das macht wenig Sinn. Der Sprachtheoretiker
wuerde sagen: ``Ist `Haus' Teil der Deutschen Sprache, ...'' In
unserem Fall waere es dann: ``Ist »abc« Teil der durch die RE
»I<(.*).*>« definierten Sprache, ...'' Allerdings haben
Programmierer einen anderen Betrachtungswinkel. Sie reden davon,
ob die RE auf einen String matcht, also ob sie ``passt''.

In gewisser Weise ist eine RE eine Pruefroutine, die die Frage
beantwortet, ob der String zu der durch die RE definierten Sprache
(= Menge an Woertern) gehoert. So komme ich auf das Wort
``anwenden''. Konkret passiert hier aber, wie du schon andeutest,
mehr: die Antwort ist nicht nur ja/nein, sondern die Antwort ist
der frueheste, laengste Substring, auf den die RE passt oder die
Information, dass sie gar nicht passt. Das wuerde ich als
Routine/Funktion ansehen, die man anwendet.

Letztlich muessen wir einsehen, dass es im Deutschen keine direkte
Entsprechung von ``to match a RE to a string'' gibt. Will man die
Satzstruktur moeglichst gleich lassen, so denke ich, ist ``einen RA
auf einen String anwenden'' die beste Umschreibung.

Alternativ koennte man versuchen den Satz so umformulieren, dass man
das Wort ``passen'' verwenden kann. Hierbei muss man aber
aufpassen, denn uebersetzt man:

	and when "(a*)*" is matched against "bc" both the whole RE
	and the parenthesized subexpression match the null string.

mit:

	und "(a*)*" passt auf den leeren String von "bc", sowohl
	der ganze RA als auch der geklammerte Unterausdruck.

dann ist das nicht vollstaendig, denn "a*" passt auch auf "a" von
"aaaab", aber wendet man es an, dann wird das Ergebnis "aaaa" sein.
Die RE passt auf viele Substrings, entscheidend ist aber, welcher
das Ergebnis der POSIX-konformen Match-Funktion ist.


Puh, jetzt habe ich viel geschrieben. Das ist nun auch wirklich
nicht einfach. Ich finde, bei REs muss man sein Gehirn erstmal
richtig hindrehen, damit das Denken dazu kompatibel ist. Wenn man
nicht ganz passend dazu denkt, dann funktioniert es zwar fuer die
einfachen Faelle, aber fuer die komplizierteren nicht mehr. Darum
lege ich hier so viel Wert darauf, die Dinge inhaltlich moeglichst
korrekt zu formulieren (zumindest nach dem was ich fuer korrekt
halte ;-) ).


Nachdem ich nun noch ein bisschen in dem Buch von Friedl gestoebert
habe, bin ich auf die Idee gekommen, dass man auch das Wort
``suchen'' verwenden koennte:

	und wenn in "abc" nach "(a*)*" gesucht wird, dann ist das
	Ergebnis, sowohl des ganzen RAs als auch des geklammerten
	Unterausdrucks, der leere String.

Auch diese Formulierung waere noch eine Option:

	der RA "(a*)*" erkennt in "abc" den leeren String, sowohl
	fuer den ganzen RA als auch fuer den geklammerten
	Teilausdruck


Mit diesem Blumenstrauss an Gedanken und Vorschlaegen lasse ich es
hier erstmal bewenden, bevor ich mich noch tiefer darin verstricke.
Du kannst dann auswuerfeln, wie du es letztlich machen willst. :-D


markus


Reply to: