2012-04-24 40 views
5

我想匹配(在這個片段中),一切高達但不包括換行符這是我想了。會做。請有人能說明我錯過了什麼。VBA正則表達式:點匹配換行符

Public Sub regexp() 

Dim oRegExp As regexp 
Dim oMatches As MatchCollection 
Dim oMatch As Match 
Dim sString As String 

sString = _ 
    "one" & vbNewLine & _ 
    "two" & vbNewLine 

Set oRegExp = New regexp 
With oRegExp 
    .Global = True 
    .Pattern = ".+" 
    Set oMatches = .Execute(sString) 
    For Each oMatch In oMatches 
     Debug.Print "*" & oMatch.Value & "*" 
    Next oMatch 
End With 

End Sub 

輸出是

*one 
* 
*two 
* 

預計輸出

*one* 
*two* 

我怎樣才能避免輸出換行符?謝謝。

回答

7

如果在地方的.使用[^\n],它會匹配任何字符除了換行字符。

+0

不幸的是,這給了我相同的輸出。 – wfsp 2012-04-24 12:20:27

+5

嘗試'[^ \ n \ R]'代替 - [文檔](http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.constants.vbnewline.aspx)表明'vbNewLine'是隻有一個新的行字符,但我有一些模糊的回憶,它實際上是系統特定的新行字符序列,其中包括Windows上的回車。 – eggyal 2012-04-24 12:23:37

+0

就是這樣,非常感謝。真正的案例是一個文本文件,你的解決方案也可以很好地工作。再次,謝謝。 – wfsp 2012-04-24 12:45:14