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

C# Regex Match Tag and text before end of it

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

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

我想得到:

现在我有:

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

但我 returns 只有:

因为那是无效的XML我想正则表达式解决方案可能对你的情况有效。

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

Demo

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

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