PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : schwierig?


trekkie
02.03.2006, 20:32
its me again,

ich knobel nun schon längere Zeit an dem Problem, so richtig komm ich nicht auf den Trichter. Ich weiss nicht, ob sich das Dings so überhaupt lösen lässt ... hier mal mein Rumgemurkse:
'erstmal mein Pattern
re.pattern = "(.*?)\{\\[Ff].*?(?:\|p\d+;|\\H\d+x;|\\Hd+\.\d+x;)(.*?)\}"

'Teststring1
s1$ = "One{\fArial Black|b0|i0|c0|p34; two}\P{\fHelvetica75|b0|i0|c0|p34;\H8.533x;three four }five\P{\Fcomplex.shx|c0;six} {\fCourier New|b0|i0|c0|p49;\C1;seven\P\fArial|b0|i0|c0|p34;\C5;eight\P}nine ten"
'--> ergibt replace $1$2
'One two\P\H8.533x;three four five\P\C1;seven\P\fArial|b0|i0|c0|p34;\C5;eight\Pnine ten
'Wunsch:
One two\Pthree four five\Pseven\Peight\Pnine ten

'Teststring2
s2$ = "One{\fArial Black|b0|i0|c0|p34; Two\PThree Four }{\fHelvetica56|b0|i0|c0|p34;\H2x;Five\P}Six{\Fscriptc.shx;\H0.5x; Seven}{\C140;\c14990363; Eight nine ten}"
'--> ergibt replace $1$2:
'One Two\PThree Four \H2x;Five\PSix{\Fscriptc.shx;\H0.5x; Seven}{\C140;\c14990363; Eight nine ten}
'Wunsch:
One Two\PThree Four Five\PSix Seven Eight nine ten
Also was ich grobgesagt möchte, überall die Steuerzeichen exxen, nur die One...ten extrahieren incl. dem \P, das ist ein Zeilenumbruch.
Geht das:

A) in 'nem Oneliner?
B) gehts überhaupt?

thx, lg Nancy


butterkeks
02.03.2006, 22:02
so?

(One(\\P)?|Two(\\P)?|Three(\\P)?|...)+

(die "..." natürlich enstprechend ausfüllen)

Wenn es nicht klappt, dann stell die Aufgabe bitte genauer...

trekkie
02.03.2006, 22:20
hm, danke, aber OneTwo & Co standen für variable Texte;-)
Okay, ich versuch's mal zu verdeutlichen, alles was grün == grüner Bereich, soll bleiben, alles was rot == rote Bereiche sollen raus:

Das{\fArial Black|b0|i0|c0|p34; ist\Pein Liebesbrief... }{\fHelvetica56|b0|i0|c0|p34;\H2x;laberbaber\P}Six{\Fscriptc.shx;\H0.5x;Seven}{\C140;\c14990363;Eightnine ten }
Ist das jetz besser, ich weiss nicht wie ichs sonst beschreiben soll;-)

Gruss Nancy

hugo
05.03.2006, 20:17
Wie sieht es hiermit aus?
}(.*){|{.*;([^;]*)}

trekkie
05.03.2006, 20:43
Wie sieht es hiermit aus?
}(.*){|{.*;([^;]*)}
nun ja, wenn ich ehrlich sein soll - gaaanz schlächt;-)

Aber Danke:-)
Ich glaube bald hier einen Oneliner zu finden sprengt etwas den Rahmen, da können locker mal paar Stunden draufgehen, das ist mir mittlerweile klar geworden.

Auf einen Hieb werd' ichs glaube nicht schaffen, aber sollte ich mal eine Lösung finden, werd' ich sie posten.

Aber trotzdem, nochmal thx2all,

Nancy

butterkeks
06.03.2006, 18:03
({[^{]*;|})

das funktioniert bei deinem Bsp (die 's', 'm' und 'g' flags verwenden!), aber es wäre vlt. besser, wenn du das allgemeine Format deines Strings erläuterst

trekkie
07.03.2006, 23:27
({[^{]*;|})
das funktioniert bei deinem Bsp (die 's', 'm' und 'g' flags verwenden!), aber es wäre vlt. besser, wenn du das allgemeine Format deines Strings erläuterst

Danke Dir, das RegExp klappt soweit.
Die Sache ist nur die, sobald in den Textparts zB. ein ';' oder ein Steuerzeichen '{' '}' selber steht, steht gehts furchtbar in die Hosen;-)

Das Format des Strings kann zB. eingeleitet werden mit:

{\firgendein-ttf-Font fett|kursiv| usw| bis zum letzten ; Text}
{\Firgendein-shx-Font fett|kursiv| usw| bis zum letzten ; Text}
{\H0.5x; Text} 'das wäre eine Höhenänderung des Standartstil's
{\C140;\c14990363; Text} 'wäre eine Farbänderung des Standardstil's in RGB
{\C1; Text} ' wäre eine Farbänderung des Standardstil's in ACI-Index [0-255]
'auch Kombinationen sind möglich, zB:
{\H0.5x;\C1; Text}

ist ziemlich confused ich weiss...
Es ist mühsam hier alle Kombinationen zu erörtern, da ich sie möglicherweise nichtmal selber alle kenne;-)

Aber Danke, Butterkeks, dein Rexp hat schonmal was :-)

lg Nancy
--
ps: BITTE nicht mehr drüber nachdenken, ich schieb' die formatierten Acad-MTexte unter Kategorie Weltwunder/-rätsel ...

butterkeks
08.03.2006, 17:51
noch ein letzter Vorschlag:

{\\[^}]+;([^}]+)}

Ersetze das mit dem ersten Submatch. s, m und g nicht vergessen

trekkie
08.03.2006, 21:24
Das{\fArial Black|b0|i0|c0|p34; ist\Pein Liebesbrief;... }{\fHelvetica56|b0|i0|c0|p34;\H2x;laberbaber\P}Six{\Fscriptc.shx;\H0.5x;Seven}{\C140;\c14990363;Eightnine ten }

ergibt $1:
Das... laberbaber\PSixSevenEightnine ten

an den ';' im Text - wenn gewollt - muss ich mal noch etwas rumfeilen, sonst isses zu unsicher.

Aber matsch thx Dir! :-)

lg Nancy
--
Karen has her own i, and she is not going to let Frank put his data into it. (Boswell)