Можно ли создать одно регулярное выражение для замены ‹ и > их эквивалентами сущностей в Komodo Edit?
s/<|>/<|>/
Можно ли создать одно регулярное выражение для замены ‹ и > их эквивалентами сущностей в Komodo Edit?
s/<|>/<|>/
Я предполагаю, что вам, возможно, придется преобразовать &
в &
и так далее.
В этом случае, скорее всего, есть библиотека или функция на любом языке/платформе, которую вы используете (например, в Java проверьте StringEscapeUtils). Укажите, какой язык вы используете, и кто-нибудь здесь, без сомнения, укажет вам на что-то подходящее.
Это легко сделать практически на любом языке без использования регулярных выражений:
PHP:
$xml = str_replace(array('>', '<'), array('>','<'), $xml);
Питон:
xml = xml.replace('>', '>').replace('<','<');
и т.п.
Вы можете использовать хеш-переменную, например:
my %data;
$data{"<"} = '<';
$data{">"} = '>';
s/(<|>)/$data{$1}/g;
Это зависит от языка, который вы используете. В Perl вы можете сделать:
s/([<>])/$1 eq '<' ? '<' : '>'/ge
Другие языки обычно позволяют вам предоставить функцию обратного вызова match, которая возвращает строку замены. А именно: в С# вы можете сделать это:
Regex.Replace("<", "([<>])", x => x.Value == "<" ? "<" : ">")
Спасибо всем. Я искал что-то, что я мог бы использовать в Komodo Edit, поэтому переменные и условные операторы не были вариант. Вот лучшее решение, которое я нашел, основанное на руководстве по Sed по адресу IBM Developerworks:
s/<([^>]*)>([^<]*)<([^>]*)>/<\1>\2<\3>/
В Komodo Edit 5.x используйте moreKomodo для сохранения следующего поиска/замены поиск по регулярному выражению:
Находить:
<([^>]*)>([^<]*)<([^>]*)>
Заменять:
<\1>\2<\3>