1

我是 RegEx 的新手,我似乎无法弄清楚为什么这不起作用。我让它工作但丢失了我的数据。我已经尝试了各种变化,但我不记得我之前做了什么来让它工作。

我有以下变化的字段

SB123
一些数据 SB 1234
一些数据 SB 1234567 和更多数据
SB1234. ”等...

我想提取的是 SB 和数字部分。有人可以帮忙吗?

Sub ExtractSBData()

Dim regEx
Dim i As Long
Dim pattern As String
Set regEx = CreateObject("VBScript.RegExp")
regEx.IgnoreCase = True
regEx.Global = True
regEx.pattern = ".*(SB\s*\d{3}\d+).*"

    For i = 2 To ActiveSheet.UsedRange.Rows.Count
        If (regEx.test(Cells(i, 14).value)) Then
            Cells(i, 16).value = regEx.Replace(Cells(i, 14).value, "$1")
        End If
    Next i

End Sub

抱歉,我意识到我没有解释它目前在做什么。目前它只有在分组被数据包围时才有效(即“这里的数据 SB123 和这里的数据,但不是“这里的 SB123 数据”或“这里的数据 SB123 ”)。此外,它将整行放在单元格中(i,16 ) 而不仅仅是 SB 编号部分。

4

1 回答 1

2

您可能只是想尝试一下SB\s*\d{3,}

如果这不起作用(因为您要查找的文本之前或之后的数据),请记住.RegEx 中的运算符匹配 \n(换行符)之外的每个字符。那你可以试试[.\n]*SB\s*\d{3,}[.\n]*

让我知道其中一个是否适合您。

于 2013-05-21T17:17:43.193 回答