C#正则表达式在结束前匹配标记和文本

时间:2015-10-01 08:44:02

标签: c# regex tags

我需要在它们之间提取标签和文本。 示例文本

<SampleTag1>Text \r\n More < Text < <\SampleTag1>

我想得到:

  • Group1:SampleTag1
  • 第2组:文字\ r \ n更多&lt;文字&lt;

现在我有:

"<(\w+)>([^</]*)"

但我不会回来:

  • Group1:SampleTag1
  • 文字\ r \ n更多

1 个答案:

答案 0 :(得分:1)

由于这不是有效的XML,我认为正则表达式解决方案在您的情况下可能有效。

<(?<tag>\w+)>(?<text>.*?)</\k{tag}>

Demo

我使用了一个懒惰的限定符(.*?)来匹配尽可能少的字符,但由于结束标记是必需的,因此它必须与标记内的文本匹配才能成功。如果需要换行支持,请与RegexOptions.Singleline一起使用。如果你可以嵌套标签,这个表达式将不起作用。

(如果需要,请将</替换为<\\