(Excel)VBA Regex是否具有忽略大小写标志?

时间:2018-07-18 16:29:11

标签: regex excel vba excel-vba

所以我知道Excel VBA regex对象具有ignoreCase属性,但是有没有办法在regex模式中用一个标志来表示呢?我尝试了/i?i等,却找不到有效的方法。

例如,我有:

  • 测试
  • 测试
  • TeSt

我想要一些可以匹配所有三个或仅“测试”的模式。 test适用于后者,但是当我希望它们为所有三个条目返回匹配项时,这些都不返回结果:

  • test/i
  • (test)/i
  • /test/i

我目前在用户表单上有一个复选框,可以切换ignoreCase,但如果可能的话,我想重新获得该房地产。

1 个答案:

答案 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]。不过,如果您想动态地进行操作,则仍需要对代码进行一些操作。