[Tustep-Liste] iteratives Ersetzen innerhalb eines Bereiches

Wolfram Brunschön brunschoen at bbaw.de
Do Jun 1 19:51:06 CEST 2006


Lieber Herr Trauth,

wie immer ganz herzlichen Dank! Es läuft prima. 
Darf ich Sie und die TUSTEP-Gemeinde gleich mit 
einem neuen Problemchen belästigen?

Ich möchte überprüfen, ob in einem Satz die 
zwischen !s und :: stehende Zahl zwei- bzw. 
mehrfach hintereinander vorkommt und die 
doppelten Vorkommen durch nichts ersetzen.

[reg] Test    !s5::%1¿ !s5::%2¿ !s5::%3¿ !s5¡¿ !s6¡¿ !s7¡¿ !s8¡¿ !s9¡¿

herauskommen sollte also:

[reg] Test    !s5::%1¿ %2¿ %3¿ !s5¡¿ !s6¡¿ !s7¡¿ !s8¡¿ !s9¡¿

Dann wäre es schön zu überprüfen, ob die zwischen 
!s und :: stehende Zahl identisch mit der 
darauffolgenden, zwischen !s und ¡¿ stehenden 
Zahl ist (falls eine solche denn folgt) und letztere vor die erste zu stellen.

Etwas dümmeres als das folgende ist mir für den 
Anfang nicht eingefallen, es hapert mal wieder am wesentlichen Verständnis.
aa        |[reg]|
al    1   |!s|
el    1   |::|
liv   1   i1 i2
rr    1   if (i2.eq.i1) i2 = i1;
eiv   1   i1


Vielen Dank im voraus und liebe Grüße

Wolfram Brunschön.





At 10:19 01.06.2006, you wrote:
>Diskussionsforum Tustep-Liste
>Weitere Informationen: www.itug.de
>------------------------------------------------------------
>
>
>Lieber Herr Brunschoen,
>
>zu Ihrer Frage:
>
> > Innerhalb von Fußnoten befinden sich gem. <5s
> > definierte Indexeinträge. Diese sollen nun vor
> > die jeweilige Fußnote kopiert werden.
> > #KO,hilf.5,hilf.6,,+,*
> > <5s       |&xp<><%&x{|
> > axx       |@f+|
> > exx       |@f-|
> > xx        |@f+<><%<5|&xf&x{>=05>=(01-04)|
> > xx        |@f+<5|&xf&x{>=04>=(01-03)|
> > xxi       3
> > *eof
> > Frage:
> > Warum wird nur der erste Indexeintrag innerhalb
> > einer Fußnote herausgezogen? Liegt es an einer
> > falschen Angabe zu xxi, oder muß eine Sprungta-
> > belle erstellt werden?
>
>Nein, es liegt an Ihrem Muster: Sie lassen nach
>'@f+ plus Beliebiges plus Kommentar' suchen, und
>diese Suchzeichenfolge kommt fuer das Programm,
>das stur von links nach rechts sucht, auch dann,
>wenn *viele* Kommentare in der Fn. drinstehen, nur
>ein einziges Mal vor. Aber das Problem laesst sich
>leicht loesen. Zuerst die Daten: Wenn Ihre Textdatei
>so aussieht:
>
>---------------------------------------------------
>$ Text Text Text Text Text Text Text Text Text Text Text Text
>Text Text Text Text Text Text Text Text Text Text Text Text
>Text Text @f+ Text Text &xp Name1 &x{ Text Text &xp Name2 &x{
>Text Text &xp Name3 &x{ Text Text &xp Name4 &x{ Text Text Text
>Text Text Text Text Text &xp Name5 &x{ Text Text &xp Name6 &x{
>Text Text @f- Text Text Text Text Text Text Text Text Text
>Text Text Text Text Text Text Text Text Text Text Text Text
>Text Text Text Text Text Text Text Text Text Text Text Text
>Text @f+ Text Text &xp Name7 &x{ Text Text &xp Name8 &x{ @f-
>Text Text Text Text Text Text Text Text Text Text Text Text
>----------------------------------------------------
>
>muesste das folgende (kommentierte! ;o)) #kopiere die
>gewuenschte Leistung erbringen:
>
>----------------------------------------------------
>#ko,q,z,+,+,*
>         * Definition der Zeichen in einer Fussnote:
><fz       |<%||@f+|@f-|
>         * Abschnitte zusammenfassen an Hand von '$ ':
>aa        |$ |
>         * Pruefen, ob Fn. + Kommentar vorkommt:
>zf+   1   |@f+><<><[fz]&x><<><%&x{|
>         * Wenn ja, austauschen wie angegeben:
>xx    1   |@f+><<><[fz]&x><<><%&x{|&xf&x{>=(5-10)>=(1-4)|
>         * Danach erneut pruefen (-> 11) usw.
>spn        3
>sp2       11
>sl        80 80
>         * Ausgabesaetze unterteilen an &xf&x{ und @f+... at f-:
>za        |&xf&x{|@f+|
>ze        |@f-|
>*eof
>----------------------------------------------------
>
>Die von Ihnen gewuenschte Iteration funktioniert wie
>im Kommentar angegeben: Das Programm sucht zunaechst
>mit zf+, ob Fn.-Beginn plus Kommentar vorkommt, dann
>tauscht es aus (im Prinzip so, wie Sie es schon reali-
>siert hatten), dann geht es zurueck in den Vergleich
>(Sprung nach -> 11), sucht wieder mit zf+, tauscht
>wieder usw., bis das Suchen nicht mehr erfolgreich
>ist (dann Sprung in die Ausgabe -> 3). Das war's.
>
>
>Viele Gruesse reihum von
>
>Michael Trauth
>
>
>---------------------------------------------------------------
>Dr. Michael Trauth                  e-mail: trauth at uni-trier.de
>Rechenzentrum                       office: Tel. 0651-201-3413
>der Universitaet                            Fax  0651-201-3921
>Universitaetsring                secretary: Tel. 0651-201-3417
>D-54286 Trier
>---------------------------------------------------------------
>
>------------------------------------------------------------
>Tustep-Liste at itug.de
>https://lists.uni-wuerzburg.de/mailman/listinfo/tustep-liste



Mehr Informationen über die Mailingliste Tustep-Liste