PDA

View Full Version : [REG EXP] sostituzione di stringhe


frantheman
07-01-2010, 09:26
salve a tutti,
ora... non che sia un vero problema di programmazione ma quasi..
ho un file di testo dove gli attributi dei caratteri sono dati da marcatori particolari (ad esempio il testo in grassetto e' racchiuso fra <B> e <D> - <D> in realta' credo che stia per default, dato che termina ogni tag, comunque poco importa)

quello che vorrei fare e', una volta aperto il file di testo in un wordprocessor (oo writer) sostituire i marcatori con la formattazione del testo, cioe' ad esempio <B>ciao<D> con ciao.

l'idea naif era quella di mettere nel campo cerca: <B>*<D> - nel campo sostituisci: * (con attributo grassetto).

ovviamente non funziona. ho provato con le espressioni regolari ma allo stesso modo senza successo. credo pero' che sia la strada giusta. la cosa migliore e' stata ricercare tramite <B>[:alpha:]{10}<D> e cosi' ho trovato i grassetti di 10 caratteri, meglio di nulla, pero' non riesco ad impartire l'istruzione di utilizzare la 10-stringa alfanumerica nel campo "sostituisci"....

di indole sarei tentato di perdere tutto il giorno per riuscirci, solo che sto cercando di diventare pragmatico e mi rendo conto che mi conviene piuttosto fare tutto a mano....

Fenomeno85
07-01-2010, 10:55
ehm credo che devi passare ad usare un bel linguaggio di programmazione.

Io lo farei usando c# o quello che sai e usando rtf. Io ho fatto così facendo una migrazione di un mio software da html -> rtf.

~§~ Sempre E Solo Lei ~§~

frantheman
07-01-2010, 11:12
ehm credo che devi passare ad usare un bel linguaggio di programmazione.
eh si', sarebbe l'ora... come direbbe shrek: "ce l'ho nella lista delle cose da fare.." :)
quindi l'idea sarebbe programmare qualcosa che prenda in pasto il file (in forato rtf?) e ne restituisca uno con le modifiche apportate?

Fenomeno85
07-01-2010, 11:30
eh si', sarebbe l'ora... come direbbe shrek: "ce l'ho nella lista delle cose da fare.." :)
quindi l'idea sarebbe programmare qualcosa che prenda in pasto il file (in forato rtf?) e ne restituisca uno con le modifiche apportate?

te prendi in formato testo normale .. e poi lo porti in rtf usando la sintassi appropriata. A quel punto avrai la possibilità di avere il testo in grassetto, italico e tutte le funzionalità che tale formato di da.

~§~ Sempre E Solo Lei ~§~

frantheman
07-01-2010, 11:36
ok.. per me posso portarlo anche in latex o altro...
lo scoglio duro e' quello della sostituzione massiva dei marcatori, gia' a cominciare dalla loro ricerca ed indviduazione....
prevedo gia' di far tutto a mano.. uff... :)

Fenomeno85
07-01-2010, 11:43
ok.. per me posso portarlo anche in latex o altro...
lo scoglio duro e' quello della sostituzione massiva dei marcatori, gia' a cominciare dalla loro ricerca ed indviduazione....
prevedo gia' di far tutto a mano.. uff... :)

se usi C# il gioco è semplice.

Se poi vuoi anche portarlo a latex non c'è nessun problema

~§~ Sempre E Solo Lei ~§~

gugoXX
11-01-2010, 19:45
In C#,

Regex.Replace(sorgente, "<B>(.*?)<D>", "<L>$1<M>");

Sostituisce quanto c'e' tra ogni <B> e il primo <D> possibile, mettendoli in mezzo a <L> ed <M> rispettivamente.


Questo invece, per la cronaca, prende ogni parola formata da una stringa letteraria, seguita da una stringa numerica, e le inverte...


Regex.Replace(sorgente, @"([a-zA-Z]+)(\d+)","$2$1");


Spero serva

frantheman
13-01-2010, 13:17
grazie gugoXX, lo terro' per referenza - ora pero' non ho tempo di mettermi a imparare il CI-DDIESIS :) questi formalismi mi affascinano pero'