[Allegro] Volltextsuche: srx & ftr

Fischer, Thomas fischer at sub.uni-goettingen.de
Di Jul 11 14:41:30 CEST 2017


> Am 11.07.2017 um 13:00 schrieb Bernhard Eversberg <b-eversberg at gmx.de>:
> 
>> Gesendet: Dienstag, 11. Juli 2017 um 12:48 Uhr
>> Von: "Fischer, Thomas" <fischer at sub.uni-goettingen.de>
>>> 
>>> Sie denken zu kryptisch. Versuchen Sie's mit  _#12.*; - _#12.*,;
>> 
>> Ich glaube nicht, vielleicht höchsten zu sehr in RegExp befangen…
>> 
> Aber Sie wollen doch nicht sagen, das sei nicht kryptisch?

Das kommt auf die Sichtweise an. Manche Leute halten sogar die Exportsprache von Allegro für kryptisch…

>> Problemfälle sind von der Art
>> #12 Klaus Meier; Müller, Fritz; Hans Schmidt
>> , also Aufzählungen von Personen, bei denen die Namensansetzung nicht invertiert ist.
>> Im ersten Anlauf geht es mir um den "Klaus Meier", der "Hans Schmidt" käme dann in einem weiteren Anlauf oder einem komplexeren regulären Ausdruck dran.
>> Da hier die *Reihenfolge* der Zeichen von zentraler Bedeutung ist, sehe ich nicht, wie Sie das mit einem weniger kryptischen Ausdruck einfangen können.
>> 
> Haben Sie den obigen Vorschlag denn versucht? Oder habe ich Ihre damit beantwortete Frage doch nicht verstanden?

Zweimal nein. Nicht getestet, weil ich keine Datensätze mit ",;" haben, wenn doch, wären das noch andere Probleme.
Nein zum zweiten:
Wie wollen Sie mit Ihrer Suche
#12 Klaus Meier; Müller, Fritz
von
#12 Meier, Klaus; Müller, Fritz
unterscheiden?

>> Nur Sie, die diese regulären Ausdrücken implementiert haben, können sagen, wie ich Zeilenwechsel aus der Suche ausschließen könnte. Die mir bekannten RegEx-Maschinen erlauben meist irgendwelche Escape-Mechanismen wie \n, \x0A oder \010. Kann man mit ^J da etwas machen?
>> 
> Befehl srx durchsucht das, was in dem Moment in der iV steht. Wenn das Einlesen zeilenweise geschieht, ist der Zeilenwechsel kein Problem.

Das kommt darauf an, was Sie unter zeilenweise verstehen. Bei ftr.flx wird mit
fetch +rec
in eine Zeile der ganze Datensatz eingelesen, dies wird dann (automatisch) in Einzelzeilen aufgeteilt.

Damit findet – wie erwähnt –
_#12[^,]*;
auch
#12 Esztergomi Bazilika
#16 hu; en; de; ru

Mit der €-Ersetzung liefert
_#12[^,€]*;
das Gewünschte, da fehlt es dann nur an Eleganz.
Im Prinzip ginge dasselbe auch z.B. mit ASCII 30 (=^`) , das müsste man dann nur als ALT-0030 eingeben.

> Wenn nicht, also z.B. satzweises Einlesen, dann codieren Sie den Zeilenwechsel mit ^M^J, denn das sind die Zeichen, die am
> Zeilenende dann stehen.
> Oder unter Linux zur Sicherheit  zuerst
> 
> ins _^M__
> 
> und dann bleibt auf jeden Fall nur  ^J  als Zeilenwechsel, wie eben unter UNIX üblich.

Da verstehe ich nicht, wie das mein Problem lösen könnte.

Mit besten Grüßen
Thomas Fischer

-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 842 bytes
Beschreibung: Message signed with OpenPGP using GPGMail
URL         : <http://bibservices.biblio.etc.tu-bs.de/pipermail/allegro/attachments/20170711/ca8c0a7f/attachment.sig>


Mehr Informationen über die Mailingliste Allegro