2012-04-24 11 views
5

Voglio abbinare (in questo frammento) tutto fino a ma non includendo una nuova riga che è quello che ho pensato a. farebbe. Qualcuno potrebbe far luce su ciò che mi manca, per favore.vba regex: punto corrispondente newline

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 

uscita è

*one 
* 
*two 
* 

Previsto in uscita

*one* 
*two* 

Come posso evitare il ritorno a capo in uscita? Grazie.

risposta

7

Se si utilizza [^\n] al posto di ., corrisponderà a qualsiasi carattere tranne il carattere di nuova riga.

+0

Purtroppo, questo mi dà lo stesso risultato. – wfsp

+5

Prova '[^ \ n \ r]' invece - La [documentazione] (http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.constants.vbnewline.aspx) suggerisce che 'vbNewLine' è solo un carattere di nuova riga, ma ho un vago ricordo in realtà è la sequenza di caratteri di nuova riga specifica del sistema, che include un ritorno a capo su Windows. – eggyal

+0

Ecco, grazie mille. Il caso reale era un file di testo e anche la tua soluzione funziona bene. Di nuovo, grazie. – wfsp

Problemi correlati