【问题标题】:Excel VBA - Regex.Escape MethodExcel VBA - Regex.Escape 方法
【发布时间】:2018-07-21 00:22:17
【问题描述】:

我一直在寻找可以转义正则表达式中的特殊字符的 VBA 代码。 VB 有一个Regex.Escape 方法。 VBA 中是否有等价物?

或者那里有 VBA 代码,所以我不必重新发明轮子?非常感谢!

编辑:我的意思是“Microsoft VBScript 正则表达式 5.5”库没有 Regex.Escape 方法。那里有等效的代码吗?

【问题讨论】:

  • VBA 没有本地正则表达式 - 你是说 vbscript 吗?
  • @ Tim,除非我遗漏了什么,但您所指的文档只有 TestReplaceExecute 方法。它似乎没有 Escape 方法(或类似的方法)。你能指出我正确的方向吗?谢谢!
  • 您能否举例说明您遇到的问题?
  • 我有一个 VBA 函数可以根据正则表达式检查字符串。然而,在某些情况下,我只想与模式进行比较(即将“。”视为点,而不是通配符)。当然,我可以构建另一个函数,将反斜杠 () 放在特殊字符的前面。但如果已经有类似 [link]docs.microsoft.com/en-us/dotnet/standard/base-types/… 的东西,我不想重新发明轮子

标签: regex vba excel


【解决方案1】:

您可以使用以下代码:

Dim regExEscape As New RegExp
With regExEscape
    .pattern = "[-/\\^$*+?.()|[\]{}]"
    .Global = True
    .MultiLine = False
End With

当您需要转义用户定义字符串中的特殊字符时,请使用

.pattern = regExEscape.Replace(user_string, "\$&")

[-/\\^$*+?.()|[\]{}] 模式包含一个字符类,它匹配所有可能的元字符,您需要在模式中转义以将其视为文字字符。它匹配-/\^$*+?,@9876543@32@,@9876543333,@,),@987654334 []{},当你用\$&替换它时,一个转义的\会在它们之前添加($&是对整个匹配值的反向引用) .

【讨论】:

  • 虽然我不确定如何,但这对我有用。我正在使用以前 regex.execute 的结果来构建新模式,并且该结果包含元字符。这准确地逃脱了他们。谢谢!
猜你喜欢
  • 2016-06-05
  • 2016-09-12
  • 2015-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-03
  • 2017-08-14
相关资源
最近更新 更多