所以我知道Excel VBA regex对象具有ignoreCase
属性,但是有没有办法在regex模式中用一个标志来表示呢?我尝试了/i
,?i
等,却找不到有效的方法。
例如,我有:
我想要一些可以匹配所有三个或仅“测试”的模式。 test
适用于后者,但是当我希望它们为所有三个条目返回匹配项时,这些都不返回结果:
test/i
(test)/i
/test/i
我目前在用户表单上有一个复选框,可以切换ignoreCase
,但如果可能的话,我想重新获得该房地产。
答案 0 :(得分:3)
无法在VBA regex中使用内联修饰符,它不支持它们,也没有使用/test/i
之类的regex分隔符表示法,因为所有模式都应使用字符串文字提供。
请参见Constructing a Regular Expression Micorsoft reference:
在Visual Basic脚本版(VBScript)中,一对引号(
""
)界定了正则表达式。
实际上,它们不是定界符,而只是字符串文字“边界”。
然后,在Flags section中将其写为:
在VBScript中,可以通过将等效属性设置为 True 来指定这些标志。
因此,无法在模式内使用这些标志。 VBScript’s Regular Expression Support article at regular-expressions.info中也有类似的提及:
- 否mode modifiers不能在正则表达式中设置匹配选项。
您可以通过编程方式或手动将测试转到[tT][eE][sS][tT]
。不过,如果您想动态地进行操作,则仍需要对代码进行一些操作。