我有一个我认为很简单的问题,但我不知道正确的方法。
基本上,我希望我的程序能够识别其中具有特定模式的单词,如果是,则提取该模式之前的内容。
在这种情况下,模式将是,/F
特别是在单词的末尾,它会提取之前的内容。
例如,如果程序找到21/F
,它会将其识别为良好匹配并提取21
。但如果这个词是21/Fudge
,它不会做任何事情。
您知道在单词中的特定位置查找匹配项的方法吗?
我有一个我认为很简单的问题,但我不知道正确的方法。
基本上,我希望我的程序能够识别其中具有特定模式的单词,如果是,则提取该模式之前的内容。
在这种情况下,模式将是,/F
特别是在单词的末尾,它会提取之前的内容。
例如,如果程序找到21/F
,它会将其识别为良好匹配并提取21
。但如果这个词是21/Fudge
,它不会做任何事情。
您知道在单词中的特定位置查找匹配项的方法吗?
我会做:
If str Like "*/F" Then
before=Left(str, Len(str)-len("/F"))
Else
'No match!
End If
我会使用正则表达式,如下所示:
\b\w+?(\d+)\/F\b
这将帮助您匹配“/F”之前的任何数字并忽略该单词的其余部分。为了在 VBA 中使用它,您需要添加对“Microsoft VBScript 正则表达式 5.5”的引用,这是背后的 VBA。模式是 "\b\w+?(\d+)/F\b"
Public Sub Extract(Pattern as String, Text as String)
Dim regEx As VBScript_RegExp_55.RegExp
Dim matches As VBScript_RegExp_55.MatchCollection
Set regEx = CreateObject("VBScript.RegExp") ' Create a regular expression.
regEx.Pattern = Pattern
Set matches = regEx.Execute(Text)
Dim i as Long
For i = 0 To (matches.Count - 1)
Debug.Print Matches.Item(i)
Next i
End Sub
希望这可以帮助。