Regular Expression for Conditional Substitution of Angle Brackets

余生颓废 提交于 2019-12-04 19:54:24

I'm guessing that you may have to convert & to & and so on.

If this is the case there's most likely a library or function in whichever language/platform you're using (e.g. in Java check out StringEscapeUtils). Indicate which language you're using and someone here will no doubt point you to something appropriate.

It is easy in to do this in just about any language without using regex:

PHP:

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

Python:

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

etc.

You could use a hash-variable, something like:

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

It depends on the language you are using. In Perl, you could do:

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

Other languages usually allow you to provide a match callback function that returns a replacement string. To wit: In C#, you can do this:

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

Thanks everyone. I was looking for something I could use in Komodo Edit, so variables and conditional statements were not an option. Here is the best solution I found, which was based on a Sed tutorial at IBM Developerworks:

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

In Komodo Edit 5.x, use the moreKomodo extension to save the following find/replace regex search:

Find:

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

Replace:

&lt;\1&gt;\2&lt;\3&gt;
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!