В С# мне нужно удалить текст, который может отображаться между двумя конкретными тегами close XML:
Так, например, у меня есть этот текст в строке:
</factura>]]></comprobante>
И мне нужно удалить эти элементы CDATA, но это всего лишь пример и может быть другим текстом между этими двумя тегами XML.
Мне нужно это с помощью Regex.
Я пытался:
System.Text.RegularExpressions.Regex.Replace(_inputString, @"/(?<=<\/factura>).*?(?=<\/comprobante>)/", "");
Но не сработало.
Заранее спасибо.
Я прихожу из PHP, поэтому извините, если я потерплю неудачу. Я знаю, что замены и владельцы мест возможны в С# тоже.
pattern = @"(<\/[^>]+>)[^<]+<\/";
replace = "$1</";
Вам не нужно добавлять разделитель /
в ваше регулярное выражение,
System.Text.RegularExpressions.Regex.Replace(_inputString, @"(?<=<\/factura>).*?(?=<\/comprobante>)", "");
И лучше добавить (?s)
модификатор DOTALL, который соответствует тексту внутри конкретного тега, даже если он содержит символы новой строки,
System.Text.RegularExpressions.Regex.Replace(_inputString, @"(?s)(?<=<\/factura>).*?(?=<\/comprobante>)", "");
Синтаксис для Regex в С# не нужен /
, просто удалите их:
и /
donot должны избегать
_inputString= System.Text.RegularExpressions.Regex.Replace(_inputString,
@"(?is)(?<=</factura>).*?(?=</comprobante>)", "");
C#
, верно?