.NET正则表达式匹配“其他任何东西”

时间:2009-12-09 17:41:07

标签: .net regex

我正在构建一个regular expression,它将包含逻辑OR关系中的多个组...

(group A)|(group B)|(group C)

此表达式已成功匹配其预期的子字符串,但我需要添加一个与其他任何内容匹配的最终组,结果是目标字符串将完全被匹配使用。

任何人都可以建议这个缺失的群体表达应该是什么?

编辑:换行不是问题,所以我假设我们可以使用更简单的建议语法。然而,我显然做了一些非常愚蠢的事情,因为我已经简化了我的表达,只包含(。*?)并且它拒绝捕获任何东西 - 只是一堆空的匹配。 (我正在使用Rad Regex Designer进行测试,但我还尝试了另一种Regex工具,结果是一样的。)

编辑:正如所建议的,这是一个示例输入。这是一个简单的Excel公式,但它可以是任何Excel公式:

SUM(A5:D9)+AVERAGE(F5:I5)-LOOKUP(L5, N5:N14)

上述组表达被设计用于提取细胞参考(例如L5)或细胞范围参考(例如F5:I5)。因此,当针对样本输入执行表达式时,它必须生成以下9个捕获:

  1. SUM(
  2. A5:D9
  3. )+AVERAGE(
  4. F5:I5
  5. )-LOOKUP(
  6. L5
  7. ,
  8. N5:N14
  9. )

2 个答案:

答案 0 :(得分:4)

(group A)|(group B)|(group C)|([\s\S]*?)应该做的伎俩。 [\s\S]只是为了解决事件.与换行符不匹配的问题。

答案 1 :(得分:2)

为正确的(?:...)行为添加非捕获组|。为该行的其余部分添加(.*)组:

(?:(group A)|(group B)|(group C))(.*)

或者,如果您不需要单独的组:

(group A|group B|group C)(.*)