RegEx, trovare parole indietro
Le regular Expression mi hanno sempre affascinato in modo particolare!
Oggi mi sono imbattuto in un problemino carino da risolvere e magari può essere di aiuto a qualcuno:
Scenario:
all’interno di un XML ho delle didascalie che in alcuni punti contengono la nomenclatura speciale del tipo <1986?>. Questo XML lo carico all’interno di un flash e quindi i caratteri “<” e “>” non vengono interpretati come caratteri ma tutto quel blocco viene interpretato come un TAG. Risulta quindi necessario convertire i due segni con < e c > (i relativi codici).
Esempio di stringa:
<tag_xml><![CDATA[<body>Immagine
Ritratto privato;<1986?></body>]]></tag_xml>
Devo andare ad isolare solo <1986?> e farlo diventare <1986>
Non posso cercare i carateri < e > poichè questi sono presenti in altri tag che devono rimanere tali.
Ho quindi deciso di rintracciare all’interno dell’xml, il testo ?> e recuperare l’intera parola precedente a quel punto. Isolo nella regex ile tre diverse parti (“<”, “1982″ e “?>”) e sostituisco la prima e l’ultima.
Ecco qua:
(<)(\d+(?=\?\>))(\?\>)
Con sostituzione:
<$2>
(Il segnaposto viene richiamato da alcuni software in maniera differente. $2 è il modo in cui TextMate su Osx richiama i segnaposti regex)
E il gioco è fatto!












