【发布时间】:2019-10-18 10:30:57
【问题描述】:
源字符串包含这样的标签:
>>>tagA
contents 1
<<<tagA
...
>>>tagB
contents 2
<<<tagB
...
我需要提取其中的标签名称和内容。这就是我所拥有的,但仍然无法正常工作:
(?<=(>>>(?<tagName>.+)$))(?<contents2>.*?)(?=(<<<.+)$)
results 匹配了两个匹配项,但第二个匹配项中的 tagName 捕获了多行:
tagA
contents 1
<<<tagA
我做错了什么?
【问题讨论】:
-
如果您(似乎)只关心捕获的命名组,为什么还要使用后视/前瞻零长度断言?我是否可能遗漏了您的用例?为什么不“简单地”
>>>(?<tagName>[^\n\r]+)[\n\r]+(?<contents>.*?)<<<(需要单行匹配选项);-) -
我明白一件事:RegEx 在你完全学会之前真的很痛苦 :)
标签: c# .net regex regex-lookarounds regex-group