我正在构建一个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个捕获:
SUM(
A5:D9
)+AVERAGE(
F5:I5
)-LOOKUP(
L5
,
N5:N14
)
答案 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)(.*)