2012-04-24 45 views
5

Tôi muốn khớp (trong đoạn này) mọi thứ tối đa nhưng không bao gồm dòng mới mà tôi nghĩ là a. sẽ làm. Ai đó có thể làm sáng tỏ những gì tôi đang thiếu.vba regex: dấu chấm phù hợp với dòng mới

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 

Output là

*one 
* 
*two 
* 

Dự kiến ​​sản lượng

*one* 
*two* 

Làm thế nào tôi có thể tránh được xuống dòng trong đầu ra? Cảm ơn.

Trả lời

7

Nếu bạn sử dụng [^\n] thay cho ., nó sẽ khớp với bất kỳ ký tự nào ngoại trừ ký tự dòng mới.

+0

Đáng buồn thay, điều đó mang lại cho tôi cùng một đầu ra. – wfsp

+5

Hãy thử '[^ \ n \ r]' thay thế - [tài liệu] (http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.constants.vbnewline.aspx) gợi ý rằng 'vbNewLine' là chỉ có một ký tự dòng mới, nhưng tôi có một số hồi ức mơ hồ, nó thực sự là chuỗi ký tự dòng mới cụ thể cho hệ thống, bao gồm cả việc trả về vận chuyển trên Windows. – eggyal

+0

Đó là nó, cảm ơn rất nhiều. Trường hợp thực sự là một tập tin văn bản và giải pháp của bạn hoạt động tốt trên đó quá. Một lần nữa cám ơn. – wfsp

Các vấn đề liên quan