用文字识别模式

我有一个问题,我相信很简单,但我不知道正确的方法来做到这一点。

基本上,我希望我的程序能够识别具有特定模式的单词,如果是的话,提取模式之前的单词。

在这种情况下,这个模式就是在这个单词的结尾处,它将提取之前的内容。

例如,如果程序find21/F ,它将把它识别为一个好匹配,并且将提取21 。 但是如果这个词是21/Fudge ,它什么也不会做。

你知道在这个词的特定位置上寻找比赛的方法吗?

我会做:

 If str Like "*/F" Then before=Left(str, Len(str)-len("/F")) Else 'No match! End If 

我会使用正则expression式,如下所示:

 \b\w+?(\d+)\/F\b 

这将帮助您匹配“/ F”之前的任何数字,并忽略其余的单词。 为了在VBA中使用它,你需要添加一个对“Microsoft VBScript Regular Expressions 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 

希望这可以帮助。