在 .Net 中使用正则表达式
我将有一组类似这样的数据
< Bunch o' Data Here >
where <
只是新记录的指标>
是记录的结尾。
这些记录可能会像这样出现
< Dataset 1><Dataset 2 broken, no closing tag <dataset 3>
他们也可以作为
< Dataset 1>Dataset 2 broken, no opening tag ><dataset 3>
不过,我不确定后一种情况是否可能,当我必须的时候我会跨过那座桥。
我正在尝试使用正则表达式根据此开始和结束字符将它们分成记录,最终是这样的
Match 1 = < Dataset 1>
Match 2 = <Dataset 2 broken, no closing tag
Match 3 = <Dataset 3>
我试图弄清楚非捕获组是如何工作的,也许我的理解是错误的。
<.*?(?:<|>)
我认为让我非常接近,除了它包括第三组数据的开头字符和第二组数据的捕获。
我也怀疑?:
没有做它需要做的事情,如果将其取出,它会返回相同的匹配集(2)。
看起来你已经把它翻转了。你会想要使用?:
不捕获一个群体,不:?
.
<.*?(?:<|>)
稍微扩展一下:?
捕获组中的运算符表示您想要做一些特殊的事情。 A:
意味着不捕获,但还有其他操作数可以给?
以便执行其他操作。常见的是前瞻(?=
)和后视(?<
),但还有很多其他的。
我也刚刚意识到您想要匹配的范围(超出非捕获问题)。匹配的括号/括号/等的语言不是规则的,所以 - 假设我正确理解你的目的 - 你需要创建一个相当复杂的扩展正则表达式才能匹配你想要的。还有其他几个与此相关的问题,包括this one https://stackoverflow.com/questions/2595254/matching-math-expression-with-regular-expression其中有一些关于它的讨论。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)