2017-06-07 33 views
2

我正在检查一些结果并从文档传递两个输入,两个输入看起来相同,但他们为什么返回不同的输出。 我正则表达式是正则表达式在相同的输入返回不同的结果

(?<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)中

第XI

第十二

3.1节

3.1节

最后一个未显示在第一输入起来。在第一输入

+0

看,[它匹配得很好](https://regex101.com/r/8aQbs1/1)(相同的结果可以在http://regexstorm.net/tester获得)。 –

+0

所以你基本上在问两个文本之间有什么区别?答案是,没有任何。 – ClasG

+2

那么,如果他们为同一个正则表达式返回不同的输出 - 它们是不一样的。检查空白区域的差异,可能是一些不可见的字符等等。 – Evk

回答

0

最后一个没有显示出来让所有字符的

的方法之一是消耗高达锚角色。例如采取文字blah blah Section 3.1 (governed by Section 3.1)。我们有三个锚点,Section,()。让我们创建一个基于这些文字锚的模式。

我现在会评论我的正则表达式模式需要IgnorePattnerWhiteSpace在正则表达式分析器btw中正常工作。

(((Sub)?Section)|Article)\s+ # Anchor of Section or Article or Subsection 
(?<Number>[^\s]+)    # Number involved 
\s+ 
    \(       # Anchor of '(' 
     (?<Conjuct>[^)]+)   # Consume til next anchor 
    \)       # ')' anchor. 

通过使用设置[^ ]我们可以消耗任何时髦的字符,这是结束)锚。我们的比赛结果如下所示

enter image description here

为什么他们返回不同的输出。

您需要通过查看所提到的字面锚点来减少捕捉。也许甚至可以通过首先创建文本的普通标记并在第二次正则表达式传递时从标记中提取特定项目来执行两遍传递的正则表达式?

还评论你的模式,因为我已经完成并在单个项目上工作,一旦单个项目正在工作将整个模式结合在一起。

相关问题