[Allegro] Vb.226: Himmelfahrtskommando 2010
Thomas Berger
ThB at Gymel.com
Do Feb 25 10:03:41 CET 2010
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Lieber Herr Eversberg,
>>>> Nein, es wird im gesamten Text nach #nnn gesucht, und auch dann
>>>> gefunden, wenn sowas innerhalb eines Felds auftritt, aber bei feldspez.
>>>> Suche wird auch dann nur bis zum betr. Feldende gesucht.
>>> "feldspezifische Suche". Hm. Neuer Begriff.
>> Wirklich? Das wurde schon oft so gesagt, denke ich. In SRCH ging das
>> ja mit dem Komma, also #4,shakesp, nur so geht das mit RegExp nicht,
>> da muß es #4.*shakesp lauten.
>> (s. Beisp. S. 124)
>
>>>> Wieso das denn? NUR wenn ein Ausdruck mit # beginnt, wird feldspezifisch
>>>> gesucht.
Nach Experimenten stelle ich fest, dass die ganze Diskussion vom Anfang
der Woche in die Irre gefuehrt hat und alles eher so aussieht:
"." trifft niemals ein Zeilenende-Zeichen, entspricht also dem Standard-
verhalten bei absatzbasierenden Textdateien. Dementsprechend ist auch
die Semantik des Ankers "$" ganz fest: Er trifft immer den Uebergang
von Inhaltsdaten zu Zeilenende.
Insofern ist es bei einer Suche durch einen per "var kn" in die iV
gehobenen kompletten Datensatz auch niemals moeglich, einen Regulaeren
Ausdruck zu formulieren, der zeilenuebergreifend ist (d.h. mehrere
Kategorien miteinander in Beziehung setzt).
Will man das (etwa um SRCH.EXE zu emulieren, wo es m.E. ging), so
muesste man die iV vorbehandeln (also etwa mittels "ins _^J#_;#_" ;-).
Interessanterweise trifft "." durchaus ein Carriage Return, Vorbehandlung
mittels "ins _^J_^M_" boete sich also an).
Das Problem hierbei sind aber die Anwendungsszenarien, wo man keine
Kontrolle darueber hat, also insbesondere srch.job und die "Volltextsuche"
im a99-Menuepunkt "Finden". Hier muesste also eine Loesung gefunden werden,
anhand der die Routinen entscheiden koennen, ob eine "uebergreifende"
Suche realisiert werden soll.
Perl's regulaere Ausdruecke kennen "Modifier", etwa "/i" fuer eine Kasus-
unabhaengige Suche und eben auch
"/m" - Let ^ and $ match next to embedded \n (in dem Fall hat man dann neben
^ und $ noch \A und \z, \Z als Tests auf "globalen" Anfang und Ende)
"/s" - Let . match newline
Fuer srx koennte man sich aber moeglicherweise einfacher aus der Affaere
ziehen, indem man neben "." noch ein weiteres Metazeichen einfuehrt, das
auch "^J" treffen kann, ich bin mir allerdings nicht sicher, ob das
designmaessig wirklich sauber waere...
viele Gruesse
Thomas Berger
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iJwEAQECAAYFAkuGPO0ACgkQYhMlmJ6W47MCTAP/ZY+qaHZhMp7dzjZDPd6vYVR4
WHgh5PmjFyetD4lOXbtySfUtB6ervk4N62MshgCMqxnaOve8OBlqtqU2Of241nRE
HVeB/wMpGSgT+Zb/854HdQCtUVjXaxoxNtvsMcCWFXHQqREz/kJ8Vjy1NHASuKqm
WR97tSNykYSzId960BE=
=I1m7
-----END PGP SIGNATURE-----
Mehr Informationen über die Mailingliste Allegro