删除标签之间的文字

时间:2014-08-22 07:53:51

标签: c# xml regex replace

在C#中,我需要删除可能出现在两个特定的关闭XML标记之间的文本:

例如,我将这个文本放在一个字符串中:

</factura>]]></comprobante>

我需要删除这个CDATA关闭元素,但这只是一个示例,可能是这2个关闭XML标记之间的其他文本。

我需要使用正则表达式

我试过了:

System.Text.RegularExpressions.Regex.Replace(_inputString, @"/(?<=<\/factura>).*?(?=<\/comprobante>)/", "");

但是没有用。

提前致谢。

3 个答案:

答案 0 :(得分:0)

您无需在正则表达式中添加分隔符/

 System.Text.RegularExpressions.Regex.Replace(_inputString, @"(?<=<\/factura>).*?(?=<\/comprobante>)", "");

最好添加(?s) DOTALL修饰符,该修饰符与特定标记内的文本匹配,即使它包含换行符,

System.Text.RegularExpressions.Regex.Replace(_inputString, @"(?s)(?<=<\/factura>).*?(?=<\/comprobante>)", "");

答案 1 :(得分:0)

我来自PHP,很抱歉,如果我失败了。我知道替换和占位符在c#中也是可能的。

pattern = @"(<\/[^>]+>)[^<]+<\/"; 
replace = "$1</";

答案 2 :(得分:-1)

C#中的Regex语法不需要/,只需删除它们即可:

/不需要逃避

_inputString= System.Text.RegularExpressions.Regex.Replace(_inputString,
                         @"(?is)(?<=</factura>).*?(?=</comprobante>)", "");