2009-09-29 25 views

Répondre

0

Cela dépend de la langue que vous utilisez. En Perl, vous pouvez faire:

s/([<>])/$1 eq '<' ? '&lt;' : '&gt;'/ge 

D'autres langues vous permettent généralement de fournir une fonction de rappel de correspondance qui retourne une chaîne de remplacement. A savoir: En C#, vous pouvez le faire:

Regex.Replace("<", "([<>])", x => x.Value == "<" ? "&lt;" : "&gt;") 
2

Je devine que vous pourriez avoir à convertir &-&amp; et ainsi de suite.

Si tel est le cas, il existe très probablement une bibliothèque ou une fonction dans la langue/plate-forme que vous utilisez (par exemple, consultez Java StringEscapeUtils). Indiquez quelle langue vous utilisez et quelqu'un ici vous indiquera sans doute quelque chose de approprié.

0

Vous pouvez utiliser une variable de hachage, quelque chose comme:

my %data; 
$data{"<"} = '&lt;'; 
$data{">"} = '&gt;'; 
s/(<|>)/$data{$1}/g; 
1

Il est facile de le faire dans à peu près toutes les langues sans utilisant l'expression rationnelle:

PHP:

$xml = str_replace(array('>', '<'), array('&gt;','&lt;'), $xml); 

Python:

xml = xml.replace('>', '&gt;').replace('<','&lt;'); 

etc.

0

Merci à tous. Je cherchais quelque chose que je pouvais utiliser dans Komodo Edit, donc les variables et les instructions conditionnelles n'étaient pas une option. Voici la meilleure solution que je trouve, qui était basé sur un tutoriel Sed à IBM Developerworks:

s/<([^>]*)>([^<]*)<([^>]*)>/&lt;\1&gt;\2&lt;\3&gt;/ 
0

En Komodo Edit 5.x, utilisez l'extension moreKomodo pour enregistrer la découverte suivante/remplacer regex search:

Recherche:

<([^>]*)>([^<]*)<([^>]*)> 

Remplacer:

&lt;\1&gt;\2&lt;\3&gt;