具有负组的正则表达式字符类减法

时间:2012-01-25 04:52:38

标签: regex xsd xpath-2.0

这个问题与正则表达式(正则表达式)中的字符类减法有关。我指的是XPATH 2.0第二版的正则表达式。

当字符类减法中有负组时,减法运算符( - )是否在之前出现?或者在负组运算符之后(^)?

XPATH / XML架构规范的文本如下。但在我看来,它含糊不清。

  

对于任何正面角色组·或·负面角色组·G,   和任何·字符类表达式·C,G-C是有效的字符   class subtraction·,识别C(G)中所有字符的集合   也不在C(C)中。

更具体地说,请考虑以下三个正则表达式:

  1. [^ ABC- [AD]]
  2. [^ ABC - [^广告]]
  3. [ABC - [^广告]]
  4. 与干草堆文本匹配:

    • ABCDEF

    哪些可能的匹配文本(第一个和后续的)?

1 个答案:

答案 0 :(得分:2)

如果我们足够宽松地将G-C视为[G-[C]],将负视群^G视为[^G],我认为该文字不明确。现在,看起来很清楚,插入符号是第一组的一部分,并不会否定这两个组。

因此,[^abc-[ad]]会匹配:

  

{除a以外的所有字符,bc} \ {ad} = {所有字符除{{ 1}},abc}

请注意,您可以轻松测试以查看行为d 作为奖励,.Net正则表达式也支持此功能,使test online更容易 另见:Character Class Subtraction