2013-07-23 60 views
2

我有一個問題,我認爲這是很簡單的模式,但我不知道正確的方式去做。識別單詞

基本上,我想我的程序能夠在它有一定的模式,以確定的話,如果是這樣,提取的模式之前是什麼。

模式是,在這種情況下/F,特別是在單詞的結尾,它會提取什麼了。

例如,如果程序發現21/F,它會將其識別爲良好匹配並將提取21。但如果這個詞是21/Fudge,它什麼都不會做。

你知道要尋找一個匹配在單詞中的特定位置的方法是什麼?

回答

5

我會做:

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

是將與「21 /忽悠」的工作? – matzone

+0

不,「」21/Fudge「就像」*/F「= False。你將不得不分支。 –

+0

謝謝@LS_dev,就像一個魅力! – Phalanx

2

我會使用一個正則表達式,像這樣:

\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 

希望這會有所幫助。

相關問題