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