C# 正则表达式匹配标记和结束前的文本
C# Regex Match Tag and text before end of it
我需要在它们之间提取标签和文本。
示例文本
<SampleTag1>Text \r\n More < Text < <\SampleTag1>
我想得到:
- 第 1 组:SampleTag1
- 第 2 组:文本 \r\n 更多 < 文本 <
现在我有:
"<(\w+)>([^</]*)"
但我 returns 只有:
- 第 1 组:SampleTag1
- 正文\r\n更多
因为那是无效的XML我想正则表达式解决方案可能对你的情况有效。
<(?<tag>\w+)>(?<text>.*?)</\k{tag}>
我使用了惰性限定符 (.*?
) 来匹配尽可能少的字符,但由于需要结束标记,因此它必须匹配标记内的文本才能匹配成功。如果需要换行支持,请与 RegexOptions.Singleline
一起使用。如果您可以嵌套标签,则此表达式将不起作用。
(如果需要,将 </
替换为 <\
)
我需要在它们之间提取标签和文本。 示例文本
<SampleTag1>Text \r\n More < Text < <\SampleTag1>
我想得到:
- 第 1 组:SampleTag1
- 第 2 组:文本 \r\n 更多 < 文本 <
现在我有:
"<(\w+)>([^</]*)"
但我 returns 只有:
- 第 1 组:SampleTag1
- 正文\r\n更多
因为那是无效的XML我想正则表达式解决方案可能对你的情况有效。
<(?<tag>\w+)>(?<text>.*?)</\k{tag}>
我使用了惰性限定符 (.*?
) 来匹配尽可能少的字符,但由于需要结束标记,因此它必须匹配标记内的文本才能匹配成功。如果需要换行支持,请与 RegexOptions.Singleline
一起使用。如果您可以嵌套标签,则此表达式将不起作用。
(如果需要,将 </
替换为 <\
)