regex - Excel VBA 中的正则表达式

标签 regex vba excel

我正在尝试使用 Excel VBA 中的正则表达式来匹配列范围内所有单元格内的模式,并将匹配的模式删除到新的列范围。

例如

  1. 快乐日托俱乐部 (1124734)
  2. 法式糕点店 (8985D)
  3. 国王的储藏室 (G6666642742D)
  4. 比格鞋业(中国)有限公司 (ZZ454)

本质上,我想删除每个字符串的最后一个括号部分,并将这部分(不带括号)转置到不同的列范围中。

到目前为止我的正则表达式是“(([^)]+))\z”(我不知道这是否真的正确),并嵌入到这个VBA中:

Dim regEx As New RegExp
Dim strPattern As String
Dim strInput As String
Dim strReplace As String
Dim Myrange As Range

Sheets("Sheet 1").Activate
Range("FF65536").End(xlUp).Select
LastCell = ActiveCell.Address

Set Myrange = ActiveSheet.Range("FF2:" & LastCell)

For Each C In Myrange
    strPattern = "(\(([^\)]+)\)\z)"

    If strPattern <> "" Then
        strInput = C.Value
        strReplace = "$1"

        With regEx
            .Global = True
            .MultiLine = True
            .IgnoreCase = False
            .Pattern = strPattern
        End With

        If regEx.Test(strInput) Then
            Range("FF2").Select = regEx.Replace(strInput, "$1")
            Range("DX2").Select = regEx.Replace(strInput, "$2")
        End If
    End If
Next

我是个新手,所以请原谅明显的错误。

非常感谢,

最佳答案

不,您的正则表达式模式不正确。您应该单独测试您的模式,因为正则表达式是它自己的迷你语言。试试这个模式( Regex101 ):

\((.+)\)$

关于gm选项:g表示Globalm表示Multiline ,这两个值在您的代码中均设置为 True

关于regex - Excel VBA 中的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33304197/

相关文章:

c# - 将 Excel 工作簿另存为 HTML - 无法访问 'System.IO.MemoryStream'

python - 如何在 Python 中使用匹配的组和变量

java - 正则表达式在 Android 中不起作用

excel - 使用 Excel VBA 禁止在给定文件夹中保存

vba - 我正在尝试在所有工作表中运行此代码,除了工作簿中的一个

excel - VBA:方法中括号的使用

excel - 有没有我可以用来获取趋势线方程的函数?

javascript - 如何从重复的文本模式中提取内容?

java - 有效地将不同的可能子串匹配到相同的值

vba - 删除具有命名范围的工作表时出现奇怪的 Excel 错误?