识别单词中的模式

时间:2013-07-23 08:42:01

标签: excel vba design-patterns match

我有一个问题,我认为很简单,但我不知道这样做的正确方法。

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

在这种情况下,模式/F,特别是在单词的末尾,它将提取之前的内容。

例如,如果程序找到21/F,它会将其识别为良好匹配,并将提取21。但如果这个词是21/Fudge,它就不会做任何事情。

你知道在单词中的特定位置寻找匹配的方法吗?

2 个答案:

答案 0 :(得分:5)

我愿意:

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

答案 1 :(得分:3)

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

\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

希望这有帮助。