[Allegro] Vb.226: Himmelfahrtskommando 2010

Thomas Berger ThB at Gymel.com
Mo Feb 22 15:31:08 CET 2010


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Lieber Herr Eversberg,

>>>> ftr.rtf (lange nicht mehr angeschaut) interpretiere ich so, dass es
>>>> zwei
>>>> fundamentale Modi gibt:
>>>> a) die iV beginnt nicht mit "#": Die gesamte iV wird durchsucht, Anker
>>>>    und Wildcards wirken entsprechen
>>>> b) die iV beginnt mit "#": Die iV ist eine Folge von Feldern, Anker und
>>>>    Wildcards beziehen sich darauf.
>>>>
> Nein, nur ein Modus. Es ist egal, wie die iV beginnt.

D.h. die Bemerkungen zu "#" als Beginn der iV beziehen sich rein darauf,
ob "^" die Stellen unmittelbar hinter dem Kategorieende trifft oder
um ks nach rechts versetzt?


>>>> Im Fall b) vermisse ich dann Klaerung darueber, wie ein
>>>> felduebergreifender
>>>> Ausdruck gebildet werden kann, etwa fuer die Suche nach Saetzen, die
>>>> echte Kategoriewiederholungen haben ohne dass man wuesste, welche
>>>> Fortsetzungszeichen dafuer im Einsatz sind:  "#77.+#77" geht wohl
>>>> nicht,
>>>> weil ".+" am Ende der ersten gefundenen #77 abbricht?
>>>>
>>> Was genau wollen Sie machen? Ich versteh das nicht. Nach Leerzeichen
>>> kann man mit \s suchen.
>>
>> Konkrete Beispiele waeren regulaere Ausdruecke, die jeden Satz
>> treffen sollen, der (mindestens) zwei Kategorien #70ff enthaelt
>> (dabei egal ob #70i + #708 oder #70_ + #702)
> Das geht nicht.
>>
>> #70.+#70.
>>
> Das wäre tautologisch, die Suche beginnt für jeden der Ausdrücke
> von vorn, und das ist nicht änderbar.

Ich meinte nicht zwei ueber den logischen Operator " + " verkettete Ausdruecke
#70. + #70 sondern

/einen/ regulaeren Ausdruck #70.+#70



> Abhilfe: vorher die Zeilenenden durch was anderes ersetzen und dann
> .* zwischen beide Ausdrücke setzen., also
> #70.*#70
> Ohne Eingriff in ftr.flx geht das also nicht.
> 
>> Oder solche, die Saetze treffen, in denen Autor und (einziges)
>> Personenschlagwort uebereinstimmen:
>>
>> #31p(.+)$.*#40.\1
>>
> Das geht grundsätzlich gar nicht, weil die reg. Ausdrücke nicht
> zwei Felder vergleichen können. Dafür müssen Sie einen eigenen
> FLEX schreiben.

D.h. generell wird gar nicht die iV nach dem regulaeren Ausdruck durchsucht,
sondern nacheinander alle durch alternativ die Zeichen 13, 10, 13 10 oder 0
getrennten Komponenten? Das schraenkt die Brauchbarkeit aber selbst
gegenueber SRCH.EXE ziemlich ein....

Die Frage ist halt vor allem, ob "." als Platzhalter fuer "beliebiges Zeichen"
ueber Feldenden hinweg greift. In anderen Regex-Sprachen gibt es das Problem
natuerlich auch (an Zeilenenden), dort gibt es dann oft "Modifier", die eine
Feinsteuerung erlauben (das wirkt dann auch direkt auf die Semantik der Anker
"^" und "$")



In dem Zusammenhang habe ich uebrigens eine Frage zum Beispiel 8 aus ftr.rtf:

   _#9DH - _#9DH.*²n	es soll ein Feld #90a vorkommen, darin aber nicht das
Unterfeld ²n

Die Anforderung verstehe ich: (Mindestens) eine Kategorie ohne das genannte
Unterfeld soll vorkommen. Der regulaere Ausdruck trifft strenggenommen
allerdings nur Saetze, die /keine/ Kategorie mit diesem Unterfeld haben.
D.h. regulaerer Ausdruck und Beschreibung passen nur unter der Annahme
eines dreistelligen Schemas zusammen, nicht wahr?

Will ich z.B. Saetze treffen, die mindestens einen Datumsstempel #99ff /ohne/
Unterfeld-Dreieck fuer den Bearbeiter tragen, waere die Formulierung so:

_#99.[^▼]+$

Aber fuer den allgemeinen Fall "mindestens ein Feld #9D-irgendwas ohne Unterfeld
$n" faellt mir nur hoechst kompliziertes ein:

_#9D.[^▼]*(▼[^n][^▼]*)*$

viele Gruesse
Thomas Berger



-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iJwEAQECAAYFAkuClSwACgkQYhMlmJ6W47MriQP/TrXsLKW+YXOEAKHVySQ2R/bm
ZabuDlSMsDFAvT3f3mGiFNNX3Fedmipq14Gjrmw81cn3O5P6M5dzBzpUl7/X06gW
OLEqwTC2QkE09Oi/8VJufKkVrIM6SXuQ/ew7as1Y/r8GsFPh8bLoxZPdtM7HbZJS
HAf90jXwdqDH++WxYA4=
=ZsAi
-----END PGP SIGNATURE-----



Mehr Informationen über die Mailingliste Allegro