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