是否有更好的方法为Regexp或运算符分组单词?

是否有更好的方法为Regexp或运算符分组单词?,regex,vba,com,Regex,Vba,Com,在VBA、Microsoft VBScript正则表达式5.5中使用正则表达式时,我经常发现自己在寻找几个单词中的一个作为更大模式的一部分。我通常的做法是在每个单词周围使用括号,用竖线或运算符分隔 例如:手套、球拍、球、面具 整个组的最后一组括号让我找出匹配的单词。内圆括号用于使或作用于整个单词,而不仅仅是单词的第一个/最后一个字母 然而,我最终得到了一堆毫无价值的子匹配——括号中每个单词对应一个。是否有更好的方法为OR运算符分组单词 不需要内括号: (mitt|bat|ball|mask)

在VBA、Microsoft VBScript正则表达式5.5中使用正则表达式时,我经常发现自己在寻找几个单词中的一个作为更大模式的一部分。我通常的做法是在每个单词周围使用括号,用竖线或运算符分隔

例如:手套、球拍、球、面具

整个组的最后一组括号让我找出匹配的单词。内圆括号用于使或作用于整个单词,而不仅仅是单词的第一个/最后一个字母


然而,我最终得到了一堆毫无价值的子匹配——括号中每个单词对应一个。是否有更好的方法为OR运算符分组单词

不需要内括号:

(mitt|bat|ball|mask)

够了。请参见

我对vba没有太多经验,但您根本不需要内部括号。|分隔外括号的内容。如果需要,您可以在每个括号组的开头添加?:以避免在匹配结果中捕获该组。外部组可以是可选的,或者内部组可以被删除-这取决于您需要什么。谢谢Marie&Wiktor。Marie,Microsoft的实现是否支持?:构造?根据我看到的文档,它不是。但我可能遗漏了一些东西…ECMAScript正则表达式中支持非捕获组。事实上,VBScript正则表达式5.5确实支持非捕获组?:以及前瞻/负前瞻。我正在查看的文档不是旧的就是不完整的。谢谢,托马斯。多年来我一直在用艰苦的方式做这件事。很高兴我问。