我正在检查一些结果,并从文档中传递两个输入,两个输入看起来相同,但它们为什么返回不同的输出。我的判罚是
(?<preandconjunct>(?:\b([Ss]ubsection|[Ss]ection|[Aa]rticle) +)(?<conjunct>(?:(?<level>(?:(?:[IVXivx]{1,5}(?![A-Z]))|(?:[A-Z]{1,2}(?![A-Z]))|(?:[0-9]+)))|(?<level>\((?:(?:[IVXivx]{1,5}(?![A-Z]))|(?:[A-Z]{1,2}(?![A-Z]))|(?:(?!in|or|if|of|to|as|at|it|no|an)[a-z]{1,2}(?![a-z]))|(?:[0-9]+))\))|(?<level>[\.-](?:(?:[IVXivx]{1,5}(?![A-Z]))|(?:[A-Z]{1,2}(?![A-Z]))|(?:[0-9]+))))+)(?=$|[ ,;.)]))这两个输入是
根据第3.1节(应完全由第3.1节管辖)或第11.3(b)节规定的争端,本条款第十一条和第十二条的赔偿规定是双方根据本协定或与所设想的交易有关的唯一和专属的补救办法。关闭后,在法律允许的最大限度内,除基于故意欺诈的索赔外,第3.1节下的争议(应完全由第3.1节管辖)
和
根据第3.1节(应完全由第3.1节管辖)或第11.3(b)节规定的争端,本条款第十一条和第十二条的赔偿规定是双方根据本协定或与所设想的交易有关的唯一和专属的补救办法。关闭后,在法律允许的最大限度内,除基于故意欺诈的索赔外,第3.1节下的争议(应完全由第3.1节管辖),
我也期待着
第3.1节
第3.1节
第11.3(b)条
第十一条
第十二条
第3.1节
第3.1节
最后一个没有出现在第一个输入中。
发布于 2017-06-07 18:09:33
最后一个没有出现在第一个输入中。
获取所有字符的一种方法是消耗最多一个锚字符。例如,以文本blah blah Section 3.1 (governed by Section 3.1)为例。我们有三个锚,Section,(和)。让我们创建一个基于这些文字锚的模式。
现在我将评论我的regex模式,它需要IgnorePattnerWhiteSpace才能在regex解析器中正常工作。
(((Sub)?Section)|Article)\s+ # Anchor of Section or Article or Subsection
(?<Number>[^\s]+) # Number involved
\s+
\( # Anchor of '('
(?<Conjuct>[^)]+) # Consume til next anchor
\) # ')' anchor.通过使用Not set [^ ],我们可以使用任何古怪的字符,它们是而不是,是一个结束的)锚点。我们的比赛结果如下

他们为什么要返回不同的输出。
您需要通过查看前面提到的文字锚来减少捕获的复杂性。甚至可以通过第一次创建文本的通用标记,然后在第二次正则传递时,从令牌中提取特定项来执行两次传递regex?
也要像我所做的那样对你的模式进行评论,一旦单个项目开始工作,就可以将整个模式整合在一起。
https://stackoverflow.com/questions/44409692
复制相似问题