正则表达式在相同的输入上返回不同的结果

时间:2017-06-07 10:10:28

标签: c# regex

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

 '<meta http-equiv="refresh" content="0;URL=https://en.wikipedia.org/wiki/'.$_GET['w'].'"/>';

并且两个输入是

  

根据第3.1节(仅受第3.1节管辖)或第11.3(b)节规定的争议,本第XI条和第XII条的赔偿条款是该条款的唯一和排他性补救措施。根据本协议或与此处拟进行的交易有关的各方。在交割之时和之后,在法律允许的最大范围内,除了基于故意欺诈的索赔,根据第3.1节(仅受第3.1节管辖)的争议,

  

根据第3.1节(仅受第3.1节管辖)或第11.3(b)节规定的争议,本第XI条和第XII条的赔偿条款是该条款的唯一和排他性补救措施。根据本协议或与此处拟进行的交易有关的各方。在交割之时和之后,在法律允许的最大范围内,除了基于故意欺诈的索赔,根据第3.1节(仅受第3.1节管辖)的争议,

我也在期待

第3.1节

第3.1节

第11.3(b)节

第十一条

第十二条

第3.1节

第3.1节

最后一个没有出现在第一个输入中。

1 个答案:

答案 0 :(得分:0)

  

最后一个没有出现在第一个输入

获取所有角色的一种方法是消耗一个锚角色。例如,取文blah blah Section 3.1 (governed by Section 3.1)。我们有三个锚,Section()。让我们根据这些文字锚点创建一个模式。

我现在将评论我的正则表达式模式,它需要IgnorePattnerWhiteSpace才能在正则表达式解析器中正常工作。

(((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

  

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

你需要通过查看所提到的文字锚来使捕获更简单。甚至可以通过首先创建文本的一般标记来执行两遍正则表达式,并且在第二个正则表达式传递时,从标记中提取特定项目?

同样对我的模式进行评论并对其中的各个部分进行评估,一旦各个项目正在工作,将整个模式整合在一起。