RegEx: Once-only subpattern
amolip
- sonstiges
Hallo,
wie würdet ihr denn den RegEx-Begriff »Once-only subpattern« (?>...) deutsch ausdrücken? Habt ihr eine Idee?
Gruß Uwe
Hallo amolip.
wie würdet ihr denn den RegEx-Begriff »Once-only subpattern« (?>...) deutsch ausdrücken? Habt ihr eine Idee?
Einmalig zutreffendes Unter-Suchmuster?
Einen schönen Donnerstag noch.
Gruß, Mathias
Hallo Mathias,
wie würdet ihr denn den RegEx-Begriff »Once-only subpattern« (?>...) deutsch ausdrücken? Habt ihr eine Idee?
Einmalig zutreffendes Unter-Suchmuster?
Danke für den Vorschlag. Ich hätte noch schreiben sollen, dass es mir nicht um eine möglichst wortgetreue Übersetzung geht, sondern um etwas Griffiges, das ausdrückt, wofür ein »Once-only subpattern« steht.
Beispielsweise »Kein Backtracking Untermuster«, nur hört sich das total bescheuert an.
Gruß Uwe
gudn tach!
wie würdet ihr denn den RegEx-Begriff »Once-only subpattern« (?>...) deutsch ausdrücken?
aeh, once-only subpattern wuerde das ding nicht mal im englischen nennen. das waere fuer mich eher etwas, dem ein fragezeichen folgt.
in "Mastering Regular Expressions" wird die moeglichkeit als "atomic grouping" bezeichnet, entsprechend werden die ausdruecke haeufig als "atomic groups" bezeichnet (vgl. google).
"atomic group" wuerde ich auch im deutschen verwenden, obwohl natuerlich "atomare gruppe" auch moeglich waere. aus dem kontext sollte klar sein, dass weder sowas noch sowas gemeint ist.
in perldoc perlre steht zudem:
"An 'independent' subexpression, one which matches the substring that a standalone pattern would match if anchored at the given position, and it matches nothing other than this substring."
"independant" trifft es imho auch sehr gut, denn atomic groups interessiert es 'n scheiss, was ausserhalb von ihnen steht.
ich wuerde die englischen begriffe auch im deutschen verwenden, um nicht nicht gefahr zu laufen, missverstanden zu werden, zudem hat man bei fremdsprachiger terminologie immer die freiheit, die woertlichen uebersetzungen ganz normal zu verwenden, d.h. man duerfte das wort "unabhaengig" wie in der gewoehnlichen sprache verwenden und muesste es nicht beschneidend definieren, sodass man dann ploetzlich auf synomyme ausweichen muss, wenn man eigentlich "unabhaengig" meint.
prost
seth
Hallo seth,
aeh, once-only subpattern wuerde das ding nicht mal im englischen nennen.
Ich ehrlich gesagt auch nicht, hab ich aus der PHP-Doku.
Es geht mir um einen Begriff der natürlich einerseits die Funktionsweise abdeckt, andererseits aber auch anschaulich ist.
Faktisch unterdrückt das Muster (? fo* ) doch Backtracking für o*, es ist als würde auf o* kein weiteres Teilmuster folgen, was ja durch den Begriff independant ausgedrückt werden soll. Kein Backtracking, kein Weg zurück, bildhaft ausgedrückt. Ich dachte eventuell an Begriffe wie Einwegmuster oder Einbahnmuster, ich weiß, hört sich irgendwie blöd an. Was würdest du davon halten?
Gruß Uwe
gudn tach!
Faktisch unterdrückt das Muster (? fo* )
ich vermute hier einen tippfehler. du meintest wahrscheinlich (?>fo* )
doch Backtracking für o*, es ist als würde auf o* kein weiteres Teilmuster folgen, was ja durch den Begriff independant ausgedrückt werden soll. Kein Backtracking, kein Weg zurück, bildhaft ausgedrückt.
ack.
Ich dachte eventuell an Begriffe wie Einwegmuster oder Einbahnmuster, ich weiß, hört sich irgendwie blöd an. Was würdest du davon halten?
ja, ich stimme dir zu, dass es zunaechst mal irgenwie bloed klingt, aber eigentlich sind sie gar nicht so schlecht, "einweg-" ist halt - auch im kontext - mehrdeutig, weshalb ich "einbahn-" etwas besser finde. allerdings fehlt bei dem "bild" dann imho noch die unabhaengigkeit. aber "unabhaengiges einbahnmuster" oder "autonome einbahngruppe" (hihi) gefallen mir spontan eher nicht.
es bleibt jedoch die frage: warum moechtest du es ueberhaupt unbedingt uebersetzen? geht es um eine arbeit zur ausbildung als technischer uebersetzer? (von denen weiss ich, dass sie allerlei unsinniges, uebertriebenes zeug machen muessen.) schreibst du einen artikel? fuer wen? vielleicht kann ich dich ja doch noch zur verwendung des englischen begriffs ueberreden oder gar davon ueberzeugen.
prost
seth
Hallo seth,
meintest wahrscheinlich (?>fo* )
Ja, war Tippfehler.
ja, ich stimme dir zu, dass es zunaechst mal irgenwie bloed klingt, aber eigentlich sind sie gar nicht so schlecht
Das höre ich schon mal gerne, ich hatte eher befürchtet du fällst vor Schreck vom Hocker ;-)
Es ist doch wohl so, dass Begrifflichkeiten oftmals eine reine Gewöhnungssache sind. Ich kenne das von mir, ich stoße auf einen Begriff, der mich zunächst irritiert, ein wesentlicher Grund ist dabei, dass ich nicht verstehe worum es bei diesem Begriff überhaupt geht. Wenn ich das dann aber irgendwann kapiert habe, verwende ich ihn mit der größten Selbstverständlichkeit. Und wenn ich ehrlich bin, gibt es genügend Begrifflichkeiten, mit denen ich freizügig um mich werfe, ohne je darüber nachgedacht zu haben, ohne sie wirklich verstanden zu haben.
in perldoc perlre steht zudem:
"An 'independent' subexpression, one which matches the substring that a standalone pattern would match if anchored at the given position, and it matches nothing other than this substring."
Ich verstehe die Erklärung, ich stimme der Erklärung zu. Mir gefällt der Begriff "unabhängig", weil damit ganz nebenbei an einen zentralen Aspekt eines Musters erinnert wird, nämlich dass ein Teilmuster immer in Wechselwirkung mit den anderen Teilmustern des Gesamtmusters zu sehen ist, also gerade nicht unabhängig ist. Mir fällt auf, dass 'independent' in Hochkommata steht, denn vollkommene Unabhängigkeit gibt es natürlich nicht, aber da muss man jetzt aufpassen, dass man keine Haarspalterei betreibt.
Ich werde den Begriff "unabhängig" in der Erklärung verarbeiten, ob er in die Begrifflichkeit einfliessen muss? - ich finde nicht unbedingt.
allerdings fehlt bei dem "bild" dann imho noch die unabhaengigkeit. aber "unabhaengiges einbahnmuster" oder "autonome einbahngruppe" (hihi) gefallen mir spontan eher nicht.
Ich werde vermutlich aus zwei Gründen auf "unabhängig" in der Begriffsdefinition verzichten.
1. "unabhaengiges einbahnmuster"
Ist das nicht irgendwie doppelt gemoppelt? Müsste es dann nicht auch ein "abhängiges Einbahnmuster" geben.
2. "autonome einbahngruppe" (hihi) gefallen mir spontan eher nicht
Eben – also der trivialste aller Gründe, ich finde keinen "schönen" Begriff
warum moechtest du es ueberhaupt unbedingt uebersetzen?
Nein – unbedingt nicht, genau genommen ist es ein Mischmasch. Für Subpattern nehme ich beispielsweise "Untermuster", Backtracking dagegen ist Backtracking. Das schöne an der englischen Sprache ist ja, das man Dinge kurz, prägnant und elegant ausdrücken kann. Mit elegant meine ich durchaus das bildhafte – und Backtracking ist einfach ein anschaulicher Begriff. Wie sollte ich "Backtracking" auch nur halbwegs elegant ins Deutsche übersetzen?
schreibst du einen artikel? fuer wen?
Ein Buch, Zielgruppe sind Programmierer von denen ich erwarte, dass sie hinreichend Englisch können, das ist also nicht der Grund für das Übersetzen bestimmter Begriffe.
vielleicht kann ich dich ja doch noch zur verwendung des englischen begriffs ueberreden oder gar davon ueberzeugen.
Naheliegend wäre es, konsequent die englische Terminologie zu verwenden. Aber, es gilt eben auch für das Englische, nur weil sich ein Fachbegriff eingebürgert hat, muss er noch lange nicht gut gewählt sein und zweitens gibt es eben auch im Englischen für viele "Phänomene" keine eigentlichen Begrifflichkeiten.
Nimm die Begriffe "greedy" und "lazy", die passen nicht zueinander. "greedy" finde ich phantastisch, ich spreche hier von "gierig". Aber was ist quasi das Gegenteil von "gierig", ich bezeichne das als "genügsam". Ganz glücklich bin ich damit nicht, weil "genügsam" vielleicht einfach nicht so "prägnant" wie "gierig" ist. Gut – "lazy" ist kein feststehender Fachbegriff, wird aber oft verwendet. Würde ich im Englischen bleiben, stünde ich letztendlich vor denselben Problemen wie im Deutschen, ich bräuchte etwas "Griffiges" für das Gegenteil von "greedy".
Nimm ein "non-capturing subpattern" (?: ... ). Ein "non-capturing subpattern", ein "nicht einfangendes Untermuster" – egal ob im englischen oder deutschen – furchtbar.
Ich definiere hier den Begriff "Bereichsmuster" und grenze es vom Begriff "Untermuster" ab, für mich ist es kein spezielles Untermuster, sondern etwas eigenständiges. "Bereich" soll dabei ausdrücken, dass es um die Eingrenzung eines Wirkungsbereiches, beispielsweise für einen Quantifizierer, geht. Macht auch ein Untermuster, ist schon klar, aber die eigentliche Funktion eines Untermusters ist eine ganz andere als die eigentliche Funktion eines Bereichsmusters.
Der Punkt ist, ich setzte mich oftmals über die Terminologie hinweg und definiere eigene und neue Begrifflichkeiten – und das traue ich mich eher im Deutschen als im Englischen – schließlich will ich keinen Ärger mit "Friedl" bekommen ;-)
In der RegEx-Sprache über die ich schreibe gibt es das "Einbahnmuster" überhaupt nicht, deswegen hatte ich mich noch nicht darum gekümmert. Aber jetzt hat sich bei einem Fallbeispiel die Möglichkeit ergeben, diese Funktionalität wenigstens kurz vorzustellen – vielleicht lasse ich es einfach weg.
Gruß Uwe
gudn tach!
[einbahnmuster]
ja, ich stimme dir zu, dass es zunaechst mal irgenwie bloed klingt, aber eigentlich sind sie gar nicht so schlecht
Das höre ich schon mal gerne, ich hatte eher befürchtet du fällst vor Schreck vom Hocker ;-)
bin ich auch zunaechst fast. aber...
Es ist doch wohl so, dass Begrifflichkeiten oftmals eine reine Gewöhnungssache sind.
full ack. und nach etwas ueberlegen, fand ich ihn deshalb gar nicht mehr so schlimm.
Und wenn ich ehrlich bin, gibt es genügend Begrifflichkeiten, mit denen ich freizügig um mich werfe, ohne je darüber nachgedacht zu haben, ohne sie wirklich verstanden zu haben.
klar, man kann ja nicht die etymologien aller begriffe kennen.
Ich werde vermutlich aus zwei Gründen auf "unabhängig" in der Begriffsdefinition verzichten.
- "unabhaengiges einbahnmuster"
Ist das nicht irgendwie doppelt gemoppelt? Müsste es dann nicht auch ein "abhängiges Einbahnmuster" geben.
ok, sogesehen gebe ich dir recht. bei "einbahn-" schwingt vor allem mit, dass backtracking nicht angewendet wird; die unabhaengigkeit folgt dann daraus.
Das schöne an der englischen Sprache ist ja, das man Dinge kurz, prägnant und elegant ausdrücken kann.
hm, naja, zumindest was die praegnanz betrifft, geht das auch im deutschen normalerweise hervorragend.
der groessere vorteil des englischen ist imho einfach der pragmatische, dass die meisten (informatischen) fachbegriffe schon auf englisch existieren und sehr haeufig auch deutschen leuten gelaeufig sind, was die erschaffung eines zusaetzlichen deutschen begriffes unnoetig macht.
Mit elegant meine ich durchaus das bildhafte – und Backtracking ist einfach ein anschaulicher Begriff. Wie sollte ich "Backtracking" auch nur halbwegs elegant ins Deutsche übersetzen?
ack. gar nicht. und wenn jemand von "rueckverfolgung", "rucksetzverfahren" oder aehnlichem spricht, wuesste halt auch erstmal niemand, was damit gemeint sein soll. "backtracking" ist jedoch vielen gelaeufig. wozu sollte man also ueberhaupt einen pseudo-eingedeutschten begriff erfinden?
vielleicht kann ich dich ja doch noch zur verwendung des englischen begriffs ueberreden oder gar davon ueberzeugen.
Naheliegend wäre es, konsequent die englische Terminologie zu verwenden. Aber, es gilt eben auch für das Englische, nur weil sich ein Fachbegriff eingebürgert hat, muss er noch lange nicht gut gewählt sein
ok, du unterfaengst dich also, neue, bessere begriffe in den umlauf zu bringen. das ist mutig.
jedoch geht gerade bei internationalen, eingebuergerten begriffen durch nationale begriffsfindung immer auch ein stueck kommunikationserleichterung floeten.
und zweitens gibt es eben auch im Englischen für viele "Phänomene" keine eigentlichen Begrifflichkeiten.
ok, in solch einem fall ist es natuerlich hilfreich und sinnvoll, einen neuen begriff einzufuehren.
Nimm die Begriffe "greedy" und "lazy", die passen nicht zueinander.
ja, z.b. in perldoc perlre wird "lazy" in diesem kontext auch gar nicht verwendet, sondern das schlichte "non-greedy", haeufig liest man auch "ungreedy". gefaellt auch mir besser als "lazy".
Würde ich im Englischen bleiben, stünde ich letztendlich vor denselben Problemen wie im Deutschen
naja, im hinlick auf das den begriffen immanente plakative/selbstbeschreibende, hast du ja bereits das englische gelobt.
zudem existieren halt fuer mehr regexp-betreffende entitaeten englische fachbegriffe als deutsche.
insofern sehe ich bei der verwendung der englischen terminologie weniger probleme.
Nimm ein "non-capturing subpattern" (?: ... ). Ein "non-capturing subpattern", ein "nicht einfangendes Untermuster" – egal ob im englischen oder deutschen – furchtbar.
hmm, im deutschen gefaellt's mir auch nicht (hab's halt auch noch nie gelesen), aber im englischen habe ich mich so sehr daran gewoehnt, dass ich nichts schlimmes daran finde. warum auch? ich finde den begriff nicht unpassend.
["Bereichsmuster", "Untermuster"] [...] die eigentliche Funktion eines Untermusters ist eine ganz andere als die eigentliche Funktion eines Bereichsmusters.
hmm, das hoert sich so an, als wird dein buch schwerer verstaendlich fuer leute, die nur mal einen auszug daraus lesen und vielleicht nicht wissen, wie du deine persoenliche terminologie entwickelt hast.
Der Punkt ist, ich setzte mich oftmals über die Terminologie hinweg und definiere eigene und neue Begrifflichkeiten
wie gesagt: mutig; hat aber einige nachteile z.b. wenn man noch weitere buecher zum gleichen thema liest, die sich eher an die gaengigen begriffe (oder andere, eigene) halten.
was machst du eigentlich z.b. mit den zero-width negative look-behind assertions?
prost
seth
Hallo seth,
ok, du unterfaengst dich also, neue, bessere begriffe in den umlauf zu bringen. das ist mutig.
jedoch geht gerade bei internationalen, eingebuergerten begriffen durch nationale begriffsfindung immer auch ein stueck kommunikationserleichterung floeten.
Vielleicht hört sich das schlimmer an als es ist. Ich halte absolut nichts davon sich über eine bestehende Terminologie einfach hinwegzusetzen. Das tun nur Dummköpfe.
Ich komme aber nicht daran vorbei Begrifflichkeiten und Systematiken zu hinterfragen und mich gegebenenfalls darüber hinwegzusetzen. Es geht ja nicht darum zu sagen, das ist richtig und jenes ist falsch, sondern es ist ja in aller Regel eine Abwägungssache und eine Sache des Blickwinkels. Und – was in aller Regel übersehen wird – es geht ja nicht nur um rein fachliche Aspekte, sondern beispielsweise auch um didaktische Gesichtspunkte.
So etwas muss hart – und mich meine tatsächlich hart - diskutiert werden, was für mich ein großes Problem darstellt – nämlich ganz banal - mit wem? Deswegen bin ich für deine Beiträge wirklich dankbar, ich sehe jetzt schon, dass ich in dieser grundsätzlichen Frage nochmal mit mir in Klausur gehen muss.
Ich will mal den Begriff Subpattern nehmen, für dich, für mich - kein Thema. Aber, obwohl ein Subpattern ja noch zu den relativ anschaulichen Syntaxelementen gehört, für den Anfänger sind das böhmische Dörfer. Aber gar nicht so sehr, weil er die Definition nicht verstehen würde, zwei drei wirklich gute Beispiele, dann hat er schon mal ein Bild an dem er sich orientieren kann, sondern weil ihm in aller Regel keine Systematik vermittelt wird. Dabei handelt es sich um ganz banale Fragen. Es gibt also Subpattern, dann gibt's noch andere Subpattern, diese "non-capturing"-Dinger. Gibt`s eigentlich noch weitere Subpattern – oder war's das schon? Wenn ich jetzt Subpattern lese, meint er das eine oder das andere Ding? Wie lautet denn der Überbegriff? Gibt's so was? Ach so, auch Subpattern. Wenn ich jetzt Subpattern lese, meint er das eine oder das andere Ding oder meint er den Überbegriff? Wenn die einen "non-capturing" heißen, warum die anderen dann nicht "capturing"?
Usw. – banale Fragen – was ich damit sagen will, der Anfänger hat oft weniger mit den Begrifflichkeiten selber zu kämpfen als mit dem Verhältnis der Begriffe untereinander, der Systematik. Die Begriffe schwirren da noch wirr im luftleeren Raum umher.
Wie wird mir denn im allgemeinen der Begriff Subpattern erklärt?
Ich will mal versuchen zu schildern, wie es einem Anfänger gehen könnte, wenn er mit den üblichen Erklärungen zu Subpattern konfrontiert wird.
Es gibt Subpattern und dann noch diese anderen Subpattern, diese "non-capturing"-Dinger. Also das eine sind die Subpattern, die richtigen Subpattern. Das andere, die non-capturing Subpattern, sind halt eine spezielle Form davon, irgendwie sozusagen Unter-Subpattern. Deswegen hängt man da noch das "non-capturing" dran, um es vom richtigen Subpattern zu unterscheiden.
Jetzt die Definition (nur mit einem Stichwort, du weißt was ich meine)
Subpattern
1. Referenzierung
2. Wirkungsbereich
non-capturing Subpattern
1. Wirkungsbereich
Jetzt frage ich mich doch, warum heißt es eigentlich Subpattern und nicht capturing Subpattern und warum non-capturing Subpattern, statt einfach nur Subpattern? Warum ist das nicht genau anders herum? Sollte der Begriff Subpattern, der ja sowohl Oberbegriff als auch besondere Form ist, nicht für diejenige Form stehen, die das beinhaltet was beiden Formen gemeinsam ist, nämlich der Wirkungsbereich? Und diejenige Form, die hier noch etwas zusätzliches bietet, die Referenzierung, von der Hauptform abgegrenzt werden, beispielsweise indem man ein "capturing" hinzufügt?
Ein Anfänger geht nun nicht bewusst hin und analysiert die Systematik, aber unbewusst stellt er eine Reihe Fragen zum Verhältnis der Begriffe zueinander und weil er selber dieses Verhältnis nicht definieren kann, bleibt Unbehagen und letztendlich Unverständnis zurück.
Das Gegenbeispiel dazu wären die Lookarounds, da ist die Systematik ganz einfach, es gibt den Überbegriff Lookaround für die beiden gleichwertigen Unterbegriffe Lookahead und Lookbehind. Hier hat der Anfänger kein Problem mit der Systematik, dafür allerdings dann das Problem die Funktionsweise zu verstehen ;-)
Und jetzt will ich dir etwas sagen, lieber seth, ich halte die Begriffe Subpattern und non-capturing Subpattern, unter dem Blickwinkel der Systematik betrachtet für falsch, es müsste tatsächlich genau anders herum sein. Ein Subpattern ist ein Syntaxelement, dass einen Wirkungsbereich festlegt – Punkt. Dann gibt es noch die besondere Form des Subpatterns, das sog. capturing Subpattern, das sich dadurch auszeichnet, dass darauf referenziert werden kann - Punkt.
Das Problem ist – ich kann jetzt nicht einfach die bestehende Terminologie auf den Kopf stellen.
Und ich habe nun versucht mir so zu helfen, dass ich für ein non-capturing Subpattern, den Begriff Rangepattern (so will ich Bereichsmuster auf englisch einfach mal nennen) eingeführt habe. Es gibt also das Syntaxelement des Subpatterns mit dem man einen Wirkungsbereich festlegen und auf den man referenzieren kann, und es gibt das Syntaxelement des Rangepatterns mit dem nur einen Wirkungsbereich festlegen kann. Ich habe sie sozusagen entflochten, die Frage nach dem (vertikalen) Verhältnis stellt sich nicht mehr bzw. ist einfach beantwortet, das eine ist ein Syntaxelement und das andere ist ein Syntaxelement, sie sind souverän, das einzige was sie verbindet, ist, dass sie beide die Funktionaliät des Wirkungsbereiches beinhalten.
Und es gibt auch noch einen banalen Grund – die Lesbarkeit und dadurch die Verständlichkeit des Textes. Die wird durch ein sperriges Wort wie non-capturing Subpattern nicht gerade gefördert, da liest sich doch Rangepattern flüssiger.
Die Frage, ob ich letztendlich die englischen Begriffe Subpattern und Rangepattern oder die deutschen Begriffe Untermuster und Bereichsmuster verwende, ist, gemessen an diesen grundsätzlichen Überlegungen, zweitrangig.
Gruß Uwe
Alternative, bezogen auf die "Subpattern"-Problematik: ;)
Begriffe, wie das von Dir verwendete "Subpattern" könnte man sich
ganz sparen, und hingegen Wert darauf legen, daß jedes Zeichen oder
Konstrukt eines Regulären Ausdrucks ein Unterausdruck des Gesamt-
musters ist, welches sich - mehr oder minder nach Belieben - mit
anderen Unterausdrücken kombinieren oder gruppieren lässt.
Man könnte darauf hinweisen, daß Klammern einen Zusammenhalt bzw. einen
geschlossenen Raum suggerieren, und deshalb für viele Sprachkonstrukte
Regulärer Ausdrücke verwendet werden (ob die Benennung dann in Form eines
Wortes oder einem Halbsatzes erfolgt, ist meiner Meinung nach weniger
wichtig, als die Funktionsweise hinreichend zu beleuchten).
Vielleicht wäre es auch sinnvoll, zwar generell auf Gemeinsamkeiten
und Unterschiede der Sprachelemente einzugehen, aber die Bildung von
Hierarchien oder künstlichen Zusammenhängen außen vor zu lassen. Gerade
Klammern lassen sich neben der reinen Gruppierung und dem Behalten von
Funden, ja auch zur Abgrenzung von Alternativen, für die Zurückreferen-
zierung innerhalb des Ausdrucks, das Stellen von Bedingungen, das atomare
Gruppieren, das Ausloten umliegenden Terrains ;), die Benennung von
Unterausdrücken und den lokalen Einsatz von Modifikatoren verwenden.
Diese Gebilde haben zwar Gemeinsamkeiten - weshalb ich in fast jedem
Fall von Gruppen sprechen würde - aber sie lassen sich nur mit sehr
viel Phantasie alle in ein Schema pressen.
Ich finde nichts Verwerfliches in der Herangehensweise, eigene,
treffende oder einleuchtende (vor allem aber sprachlich auf die Ziel-
gruppe angepasste) Begrifflichkeiten einzusetzen - im Gegenteil, das
zeugt von einer ernsthaften Auseinandersetzung mit dem Thema - ich würde
aber sehr vorsichtig damit sein, zu viel künstliche Struktur in einen
Raum mit gleichberechtigten Elementen zu injizieren.
Hmm, jetzt bin ich von "man" doch wieder auf "ich" abgedriftet;
ja ja, das Ego. ;)
Schönes Wochenende.
Hallo ces,
daß jedes Zeichen oder Konstrukt eines Regulären Ausdrucks ein Unterausdruck des Gesamt-
musters ist,
Ja, sehr schön. Für das was du da beschreibst verwende ich den Begriff Teilmuster, die kleinste Einheit eines Teilmusters ist das einzelne literale Zeichen oder die einzele Metasequenz.
Allerdings musst du beachten, dass das Teilmuster eine logische Sicht auf das Gesamtmuster darstellt, ein Untermuster (subpattern) dagegen ein syntaktisches und dadurch auch formales Element des Gesamtmusters ist. Ein Untermuster kann immer auch als Teilmuster gesehen werden, aber ein Teilmuster darf umgekehrt nicht automatisch mit einem Untermuster gleichgesetzt werden.
, welches sich - mehr oder minder nach Belieben – mit anderen Unterausdrücken kombinieren oder gruppieren lässt.
Auch hier muss unterschieden werden, zwischen der logischen Sicht des Teilmusters auf ein Gesamtmuster und den syntaktischen Elementen aus den sich ein Gesamtmuster zusammensetzt. Syntaktische Elemente können kombiniert werden un daraus ein Gesamtmuster zu formen, ein syntaktisches Element im Kontext eines Gesamtmusters kann immer auch als Teilmuster gesehen werden.
Ich stimme dir jedenfalls zu, denn ich denke, wir meinen im Prinzip dasselbe nur mit den Begrifflichkeiten haberts – ein schönes Beispiel dafür, wie wichtig es für die Kommunikation ist (worauf ja "seth" schon hingewiesen hat), dass man gemeinsame Begrifflichkeiten hat.
das Ausloten umliegenden Terrains ;),
Herrlich :-))) Du solltest unbedingt englische Fachbücher ins Deutsche übersetzen :-)
ich würde aber sehr vorsichtig damit sein, zu viel künstliche Struktur in einen Raum mit gleichberechtigten Elementen zu injizieren.
Ja , die Gefahr besteht, ich versuche Strukturen heraus zu arbeiten, eine Systematik darzustellen und da ist ganz schnell des Guten zuviel getan.
Gruß Uwe
gudn tach!
das Ausloten umliegenden Terrains ;),
Herrlich :-))) Du solltest unbedingt englische Fachbücher ins Deutsche übersetzen :-)
"lot" ist laut duden "verwandt mit oder entlehnt aus mittelirisch lūaide = Blei" und "terrain" naja... wer haett's gedacht: "frz. terrain < lat. terrenum = Erde, Acker".
aber immerhin "liegen" ist indogermanischen ursprungs. ;-)
prost
seth
Hi,
"lot" ist laut duden "verwandt mit oder entlehnt aus mittelirisch lūaide = Blei" und "terrain" naja... wer haett's gedacht: "frz. terrain < lat. terrenum = Erde, Acker".
terra = Erde, Land
terrenus, -a, -um = irden, erdig
cu,
Andreas
gudn tach!
"lot" ist laut duden "verwandt mit oder entlehnt aus mittelirisch lūaide = Blei" und "terrain" naja... wer haett's gedacht: "frz. terrain < lat. terrenum = Erde, Acker".
terra = Erde, Land
terrenus, -a, -um = irden, erdig
ja, ganz toll; und canis = hund, und?
ok, also zitiere ich noch den rest aus dem duden:
"[frz. terrain < lat. terrenum = Erde, Acker, zu: terrenus = aus Erde bestehend, zu: terra = Erde]"
jetzt klar? ;-)
prost
seth
Hallo ces,
ich möchte noch auf zwei Bemerkungen von dir zurückkommen.
Vielleicht wäre es auch sinnvoll, zwar generell auf Gemeinsamkeiten
und Unterschiede der Sprachelemente einzugehen, aber die Bildung von
Hierarchien oder künstlichen Zusammenhängen außen vor zu lassen.
ich würde aber sehr vorsichtig damit sein, zu viel künstliche Struktur in einen
Raum mit gleichberechtigten Elementen zu injizieren.
Wenn ich dich richtig verstehe, würde ich es mal salopp so ausdrücken:
Ich sollte nicht so viel über das Verhältnis von beispielsweise Subpattern und Non-Capturing-Subpattern schwafeln, äh - philosopieren, sondern den einen und den anderen Begriff definieren. Sagen was sie gemeinsam haben und sagen, worin sie sich unterscheiden – Punkt :-)
Gruß Uwe
gudn tach!
ok, du unterfaengst dich also, neue, bessere begriffe in den umlauf zu bringen. das ist mutig.
jedoch geht gerade bei internationalen, eingebuergerten begriffen durch nationale begriffsfindung immer auch ein stueck kommunikationserleichterung floeten.Vielleicht hört sich das schlimmer an als es ist. Ich halte absolut nichts davon sich über eine bestehende Terminologie einfach hinwegzusetzen. Das tun nur Dummköpfe.
ich verstand deine antwort erst, als ich weitergelesen hatte, denn mit "einfach" meintest du wohl sowas wie "ohne vernuenftigen grund".
wenn jemand (wie imho z.b. die leute vom vds) aus gruenden, die nichts (oder hoechstens scheinbar etwas) damit zu tun haben, den kommunikationsfluss zu verbessern, versucht, die sprache zu aendern, dann gebe ich dir recht (von wegen dummkoepfe).
du z.b. hast jedoch den hohen anspruch, das verstaendnis seitens der empfaenger in den vordergrund zu ruecken und die begriffe sich daran orientieren zu lassen. und solch ein vorgehen ist alles andere als dumm, da schliesse ich mich da voll und ganz ces in seinem vierten absatz an.
Es geht ja nicht darum zu sagen, das ist richtig und jenes ist falsch, sondern es ist ja in aller Regel eine Abwägungssache und eine Sache des Blickwinkels. Und – was in aller Regel übersehen wird – es geht ja nicht nur um rein fachliche Aspekte, sondern beispielsweise auch um didaktische Gesichtspunkte.
ja, wobei man es auch mit der didaktik uebertreiben kann, indem man so tut, als waere der empfaenger zu doof um gewisse zusammenhaenge von selbst zu verstehen, was dazu fuehren kann, dass er erst dadurch etwas missversteht.
[subpattern]
Jetzt frage ich mich doch, warum heißt es eigentlich Subpattern und nicht capturing Subpattern und warum non-capturing Subpattern, statt einfach nur Subpattern? Warum ist das nicht genau anders herum?
aeh, fragst du dich das jetzt tatsaechlich oder noch in der rolle des anfaengers?
da runde, nicht-geschwungene klammern (oder eben kurz "parantheses" *g*) erstmal automatisch ein subpattern gruppieren _und_ zwischenspeichern/puffern, hat natuerlich das aushebeln dieser automatik einen separaten namen.
afaik gab es bei den BRE auch noch gar keine moeglichkeit, das capturing zu deaktivieren; sondern das wurde, glaube ich, erst spaeter entwickelt.
in perldoc perlre steht uebrigens "capture" als attribut dabei.
"The bracketing construct ( ... ) creates capture buffers."
es steht allerdings spaeter nicht mehr jedes mal explizit dabei, sondern nur bei der erstmaligen erklaerung. macht imho auch sinn so.
btw. im vim-manual bin ich auf eine andere nette umschreibung fuer non-capturing gestossen: "backref-less grouping"
und fuer atomic groups habe ich noch "non-backtracking subpatterns" gefunden, was aehnlich wie dein "einbahnpattern" ist, jedoch eine abstraktions-/assoziationsstufe weniger benoetigt.
uebrigens finde ich es immer gut, wenn in einem fachbuch auch kurz darauf hingewiesen wird, dass andere leute etwas anders benennen und wie sie das tun. das erleichtert das lesen zusaetzlicher literatur.
Sollte der Begriff Subpattern, der ja sowohl Oberbegriff als auch besondere Form ist, nicht für diejenige Form stehen, die das beinhaltet was beiden Formen gemeinsam ist, nämlich der Wirkungsbereich?
afais ist es doch auch so. ein subpattern eines patterns ist eigentlich erstmal nichts anderes als ein teil eines patterns, der fuer sich genommen ein regexp waere.
imho waere somit /bc/ ein subpattern von /abcdefg/; aber auch /(foo)/ waere ein subpattern von /a(foo)bar/. ich sehe darin auch kein didaktisches problem.
bei termen bzgl. mathematischer formeln hat man ja auch kaum probleme zu verstehen, was damit gemeint ist.
deswegen brauchst du imho auch keine angst haben, bestehende terminologie auf den kopf zu stellen und brauchst erst recht keine neuen kuenstlichen begriffe einfuehren; "rangepattern" vs. "subpattern" gefaellt mir persoenlich gar nicht.
Die Frage, ob ich letztendlich die englischen Begriffe Subpattern und Rangepattern oder die deutschen Begriffe Untermuster und Bereichsmuster verwende, ist, gemessen an diesen grundsätzlichen Überlegungen, zweitrangig.
full ack!
wobei ich "zweitrangig" hier so verstehe, als dass man sich darueber zwar auch gedanken machen sollte, aber erst _nach_ diesen grundsaetzlichen ueberlegungen.
mein bisheriges blabla bezog sich ueberwiegend auf die sekundaeren ueberlegungen. und ich bleibe auch dabei, dass ich dann die englische terminologie auch im deutschen als die adaequatere ansehe; das ist mir besonders aufgefallen, als ich die aufzaehlung ces' las, in der er versucht zu beschreiben, welche bedeutungen parentheses haben koennen, ohne die gebrauechlichen begriffe zu verwenden. ich habe nicht nur bei dem gezwinkerten "Ausloten umliegenden Terrains" relativ lange ueberlegen muessen, was er damit meint. unter verwendung der englischen standard-terminologie haette ich es vermulich einfach runterlesen und gleichzeitig verstehen koennen. klar ist es eine gewoehnungssache, aber warum soll man mehrere terminologien entwickeln? damit man doppelt so viel lernen muss, um nicht zu mehr imstande zu sein als vorher?
prost
seth
Hallo seth,
denn mit "einfach" meintest du wohl sowas wie "ohne vernuenftigen grund".
Genau.
afais ist es doch auch so. ein subpattern eines patterns ist eigentlich erstmal nichts anderes als ein teil eines patterns, der fuer sich genommen ein regexp waere.
imho waere somit /bc/ ein subpattern von /abcdefg/; aber auch /(foo)/ waere ein subpattern von /a(foo)bar/.
Siehe hierzu auch meinen Beitrag bei "ces" zu dem Begriff Teilmuster.
ich sehe darin auch kein didaktisches problem.
Doch das ist es. Denselben Begriff für ein syntaktisches Element und für eine logische Sicht auf die Dinge zu verwenden kann tödlich sein. Es ist kein Präsenzunterricht, wo man die Reaktionen sieht, wo man unmittelbar reagieren kann. Es ist Schrift, wenn der Leser aus dem Kontext – und das ist eben gerade bei Anfängern der Fall – die aktuelle Bedeutung des Begriffs nicht erschließen kann, dann, ja dann ... Ich muss dann als Autor bei jedem Popelfurz einen Halbsatz, einen ganzen Satz oder mehr dazu schreiben, um sicher zu gehen, dass der Leser den Begriff einordnen kann.
Deswegen spreche ich grundsätzlich von Teilmuster, wenn ich /bc/ in /abcdefg/ meine. Wenn ich /(foo)/ in /a(foo)bar/ meine und es mir um das syntaktische Element des Untermusters geht spreche ich von Untermuster. Beispiel: Und jetzt müssen wir das Untermuster noch quantifizieren.
Und hier mal ein Beispiel, wenn es mir um die logische Sicht auf die Dinge geht.
Beispiel: Das Untermuster /(foo)/ ist das zweite Teilmuster im Gesamtmuster /a(foo)bar/. Das Untermuster /(foo)/ besteht wiederum aus den drei Teilmustern /f/, /o/ und /o/.
Also – momentan ist es so, dass ich ein Kapitel Syntax habe, wo ich eben die Syntax übersichtartig darstelle und die Begrifflichkeiten vorstelle und definiere. Durchaus mit Hinweisen auf die Abweichungen zur üblichen Terminologie.
Ich muss das ganze überdenken, um Abweichungen werde ich nicht herumkommen, ich will es aber restriktiv handhaben und darauf achten, dass ich wirklich deutlich auf die Abweichungen hinweise.
Und ein weiteres großes, großes Problem ist es eine einheitliche Linie zu fahren. Beispielsweise mische ich ja bei "positiver Lookahead" englisch und deutsch. Ich habe keine Probleme damit, aber eigentlich müsste ich, wenn schon, denn schon schreiben "positive Lookahead" oder wenn schon, denn schon "positive lookahead" oder "positive look-ahead" oder was? Es ist ja beileibe nicht so, dass die englische Schreibweise bei den Begrifflichkeiten einheitlich ist, da geht's drunter und drüber.
Beispiel:
Und nach dem positive look-ahead kommt ein non-capturing subpattern, das dann bei unseren backreferences nicht mitzählt ...
Und nach dem positiven Lookahead kommt ein Bereichsmuster, das dann bei unseren Rückwärtsreferenzen nicht mitzählt ...
Wenn ich das gegenüberstelle, finde ich das erste einfach grauenhaft, da würde ich ja lieber gleich komplet auf Englisch schreiben.
Was ich mir vorstellen könnte wäre, dass man die Begriffe quasi halb eindeutscht. Mit Großschreibung und Bindestrichen finde ich das lesbar.
Und nach dem positiven Lookahead kommt ein Non-Capturing-Subpattern, das dann bei unseren Backreferences nicht mitzählt ...
Das gefällt mir gar nicht mal schlecht, aber ob das dann für alle Begrifflichkeiten so wirklich hinhaut kann ich jetzt nicht sagen.
Non-Capturing-Subpattern
Atomic-Group
Backreference
Modifier
Quantifier
...
"rangepattern" vs. "subpattern" gefaellt mir persoenlich gar nicht.
"rangepattern" gefällt mir auch überhaupt nicht, mit "Bereichsmuster" habe ich dagegen überhaupt kein Problem. Ich glaube, die subjektive Gewöhnung an einen Begriff spielt eine viel größere Rolle als wir denken.
Gruß Uwe
gudn tach!
(bevor ich's wieder vergesse: achte bitte darauf, dass du nicht die hier uebliche zitierweise zerstoerst.)
ich sehe darin auch kein didaktisches problem.
Doch das ist es. Denselben Begriff für ein syntaktisches Element und für eine logische Sicht auf die Dinge zu verwenden kann tödlich sein.
wie gesagt verstehe ich "subpattern" bei regexps analog zu "term" bei formeln.
in der formel
a+b(c-d)
ist (c-d) sowohl einfach erst mal ein term, als auch ein multiplikativer term (ok, mit der zusaetzlichen bezeichnung "faktor", aber die ist hier gar nicht noetig).
die strikte trennung, die du versuchst durch zwei verschiedene begriffe zu erreichen, ist imho eher verkomplizierend als erleichternd; zumal die begriffe "unter-" und "teil-" so stark synonym sind (vgl. "teilmenge" vs. "untermenge", beides bezeichnet dasselbe), dass man sie sehr leicht durcheinanderwuerfeln wuerde und somit staendig nachschauen muesste, was davon jetzt noch mal was waere.
Also – momentan ist es so, dass ich ein Kapitel Syntax habe, wo ich eben die Syntax übersichtartig darstelle und die Begrifflichkeiten vorstelle und definiere. Durchaus mit Hinweisen auf die Abweichungen zur üblichen Terminologie.
ja, sowas finde ich wichtig. dein buch wird vermutlich nicht das einzige sein, was jemand zu regexp liest.
Und ein weiteres großes, großes Problem ist es eine einheitliche Linie zu fahren. Beispielsweise mische ich ja bei "positiver Lookahead" englisch und deutsch. Ich habe keine Probleme damit, aber eigentlich müsste ich, wenn schon, denn schon schreiben "positive Lookahead" oder wenn schon, denn schon "positive lookahead" oder "positive look-ahead" oder was? Es ist ja beileibe nicht so, dass die englische Schreibweise bei den Begrifflichkeiten einheitlich ist, da geht's drunter und drüber.
jein. es gibt da schon richtlinien. "look-ahead" wuerde man im englischen afaik nicht zusammenschreiben. beim eindeutschen jedoch darf man einiges aendern am urspruenglichen wort.
Beispiel:
Und nach dem positive look-ahead kommt ein non-capturing subpattern, das dann bei unseren backreferences nicht mitzählt ...
Und nach dem positiven Lookahead kommt ein Bereichsmuster, das dann bei unseren Rückwärtsreferenzen nicht mitzählt ...Wenn ich das gegenüberstelle, finde ich das erste einfach grauenhaft, da würde ich ja lieber gleich komplet auf Englisch schreiben.
ja, komplett auf englisch ist natuerlich auch ne moeglichkeit. aber mir gefaellt der erste satz viel besser als der zweite und ich kann ihn fluessiger lesen - vor allem wegen dem fuer mich ungewohnten "bereichsmuster", was ich jetzt uebrigens schon wieder haette nachschlagen muessen, wenn nicht im satz vorher gestanden haette, dass es sich um non-capturing subpattern handelt. ;-)
Was ich mir vorstellen könnte wäre, dass man die Begriffe quasi halb eindeutscht. Mit Großschreibung und Bindestrichen finde ich das lesbar.
ja, so wird es afaik auch z.b. von der duden-redaktion empfohlen.
Und nach dem positiven Lookahead kommt ein Non-Capturing-Subpattern, das dann bei unseren Backreferences nicht mitzählt ...
Das gefällt mir gar nicht mal schlecht,
als grosser kleinschreibungsfan kann ich da dazu wohl nichts unvoreingenommenes sagen. ich finde das erste beispiel nicht schlechter als dieses dritte. ;-)
aber ok, ich wuerde an deiner stelle wohl auch die dritte variante praeferieren.
aber ob das dann für alle Begrifflichkeiten so wirklich hinhaut kann ich jetzt nicht sagen.
ich denke schon.
Quantifier
das waere evtl. mal ein begriff, bei dem das deutsche "quantor" evtl. angebracht waere, weil es zumindest in der mathematik, aber auch haeufig in der informatik, gebraeuchlich ist. es ist zudem kuerzer als das englische pendant und trotzdem aehnlich genug.
"rangepattern" vs. "subpattern" gefaellt mir persoenlich gar nicht.
"rangepattern" gefällt mir auch überhaupt nicht, mit "Bereichsmuster" habe ich dagegen überhaupt kein Problem. Ich glaube, die subjektive Gewöhnung an einen Begriff spielt eine viel größere Rolle als wir denken.
das glaube ich nicht. also versteh' mich nicht falsch. ich bin der meinung, dass die gewoehnung eine enorm grosse - um nicht zu sagen: die wesentliche - rolle spielt. das heisst, ich unterschaetze sie bestimmt nicht. mit "gefaellt mir nicht" meinte ich, dass mir "range-" bzw. "bereichs-" im ggs. zu "sub-" der didaktische gedanke verloren geht.
man muss bei dir, wenn ich's richtig verstanden habe, hart zwischen bereichs-, teil- und sub- bzw. unterpattern unterscheiden, obwohl es sich eigentlich erstmal jeweils um einen teilbereich(!) eines regexp handelt. diesen verschiedenen begriffen ist teilweise schon ein zweck inherent, obwohl der gar nicht unbedingt gegeben sein muss.
also ich finde, insg. wird die sache dadurch wesentlich komplizierter.
neben der ueberlegung, was man alles substantivisch (statt attributiv) unterscheiden _kann_, sollte man bei der begrifflichkeit auch beruecksichtigt werden, wie eine regexp-engine "denkt". denn wenn man das halbwegs verstanden hat, dann kommt man auch besser mit regexps klar.
eine regexp-engine parst einen regexp mehr oder weniger von links nach rechts und kuemmert sich nicht darum, ob eine klammer jetzt erstmal nur der gruppierung oder des zwischenspeicherns dient.
prost
seth
Hallo seth, hallo ces,
ihr habt mir mit dieser Diskussion sehr geholfen. Ich bin von eurem offenen Diskussionstil, der so gar nichts mit dem verbreiteten rechthaberischen Geplänkel zu tun hat, positiv überrascht.
Ich werde das vermutlich, da seid ihr selber schuld ;-), öfter ausnutzen, es gibt da noch jede Menge zu diskutieren, beispielsweise den von seth erwähnten Begriff "zero-width negative look-behind assertion". Aber das in einem anderen Thread.
Ich werde es jetzt erst einmal mit der "verdeutschten" Version (Großschreibung; Bindestriche) versuchen, also beispielsweise Non-Capturing-Subpattern.
Ich möchte mit der Terminologie folgende Dinge erreichen (Gewichtung nach Reihenfolge):
1. einheitliche, durchgängige Linie
2. Eindeutigkeit eines Begriffs
3. möglichst große Nähe zur bestehenden Terminologie (die in vielem zu kritisieren ist)
3. subjektiv: Lesbarkeit, was viel mit Verständlichkeit zu tun hat
»»eher verkomplizierend als erleichternd; zumal die begriffe "unter-" und "teil-" so stark synonym sind
Richtig - ich bin schon länger am überlegen Teilmuster durch Musterelement zu ersetzen und ich werde das jetzt auch tun.
»»wie eine regexp-engine "denkt". denn wenn man das halbwegs verstanden hat, dann kommt man auch besser mit regexps klar.
Volle Zustimmung, ein Auszug aus meinem Text: »...denn wenn wir jemals verstehen wollen, wie ein Muster abgearbeitet wird, dann müssen wir uns die Sichtweise der Regulären Maschine zu eigen machen.«
»»als grosser kleinschreibungsfan kann ...
Ja, diese Phase hat ich auch einmal, so mit 16, 17. Ging aber relativ schmerzlos vorüber ;-)
(bevor ich's wieder vergesse: achte bitte darauf, dass du nicht die hier uebliche zitierweise zerstoerst.)
Ich kenne mich im selfhtml-Forum noch nicht aus, entschuldigt daher solche Fehler und weist mich ggf. darauf hin. Ich habe jetzt hier auf die Schnelle aber nichts zur Zitierweise gefunden.
Gruß Uwe
gudn tach!
es gibt da noch jede Menge zu diskutieren [...] Aber das in einem anderen Thread.
wenn es mit diesem thema (also regexp-terminologie) zu tun hat, bleib besser auch in diesem thread, falls er bis dahin noch nicht im archiv gelandet sein sollte.
das wird hier sonst schnell als doppelposting angesehen.
falls dieser thread schon im archiv gelandet sein wollte, waere es gut, wenn du ihn dann verlinken koenntest.
als grosser kleinschreibungsfan kann ...
Ja, diese Phase hat ich auch einmal, so mit 16, 17. Ging aber relativ schmerzlos vorüber ;-)
es gibt leute, die halten das - obgleich gemaessigt - ueber 70 jahre durch. ;-)
(bevor ich's wieder vergesse: achte bitte darauf, dass du nicht die hier uebliche zitierweise zerstoerst.)
Ich kenne mich im selfhtml-Forum noch nicht aus, entschuldigt daher solche Fehler und weist mich ggf. darauf hin. Ich habe jetzt hier auf die Schnelle aber nichts zur Zitierweise gefunden.
schreibe einfach bei der antwort mal "hallo" ueber den rest, der ja automatisch zitiert wird und klicke auf die vorschau. etwaige meldungen ignorierst du einfach und klickst noch mal auf vorschau. du wirst dann sehen, dass dein "hallo" eine andere farbe hat als der zitierte kram. daran kannst du feststellen, ob du richtig zitiert hast.
als registrierter benutzer kann man sich die zitat-einrueckzeichen aussuchen. als nicht registrierter sind es diese "»» ". wichtig ist auch das leerzeichen. die laenge einer zeile ist nicht wie bei einer e-mail auf paar-und-siebzig begrenzt, ansonsten funzt das zitieren aber sehr aehnlich wie dort.
prost
seth
Es geht mir um einen Begriff der natürlich einerseits die
Funktionsweise abdeckt, andererseits aber auch anschaulich ist.
Was gefällt Dir denn an dem Begriff "atomares Muster"
oder "atomare Gruppe" nicht? :)
Grüsse
Hallo ces,
siehe meine Antwort an seth.
Gruß Uwe