2016-05-17 13 views
1

Ich habe Text wie folgt.So entfernen Sie unbekannte Anzahl von Zeilenumbruch mit Regex

(57) some text 
some other text 
unknown nubmer of such lines 
(12) some text 

ich möchte es zu reduzieren, um

(57) some text some other text unknown nubmer of such lines 
(12) some text 

Bedeutet Raumtrennung statt Newline.

Ist es möglich mit Regex suchen und ersetzen oder ich muss ein Skript schreiben?

Ich bin in der Lage verwenden zu finden: \(\d{1,2}\)([\w\W]*?)\(\d{1,2}\)

Es stellte sich heraus, dass meine Daten inkonsistent ist und Beginn und Ende definiert werden muss.

https://regex101.com/r/gB7wR2/2

+0

Beispiel dafür, wie 'verwenden RegExp'' Replace() 'Methode - http://stackoverflow.com/a/36624396/692942 Diese Frage wurde viele Male von verschiedenen beantwortet. – Lankymart

+0

Danke für das Hinweisen. Lassen Sie mich nachsehen und sehen, ob es sich um ein Duplikat handelt. – Rahul

+0

Ich sage nicht, dass das Beispiel ein Duplikat ist, nur dass die Frage mehrmals gestellt wurde, bevor Sie sich alle Ergebnisse für ['[vbscript] [regex] is: question replace'] ansehen (http://stackoverflow.com)/search? q =% 5Bvbscript% 5D +% 5Rregex% 5D + ist% 3AFrage + ersetzen) in [so]. – Lankymart

Antwort

4

Sie scheinen eine Regex-basierte Ersatz zu benötigen. Verwenden Sie

[\r\n]+(?!\(\d+\)) 

und ersetzen Sie sie durch ein Leerzeichen. Dieser Ausdruck passt alle Zeilenumbrüche an, die nicht mit ( + Ziffer (n) + ) übereinstimmen.

Siehe regex demo

Dim regEx As Object 
Dim result As String 
Set regEx = CreateObject("VBScript.RegExp") 
With regEx 
    .pattern = "[\r\n]+(?!\(\d+\))" 
    .Global = True 
    .MultiLine = False 
End With 
s = "(57) some text" & vbCrLf & "some other text" & vbCrLf & "unknown nubmer of such lines" & vbCrLf & "(12) some text" & vbCrLf & "(54) sometext" & vbCrLf & "some Text" & vbCrLf & "unknown nubmer of such lines" & vbCrLf & "(51) some text" & vbCrLf & "(86) some text" & vbCrLf & "some Text" & vbCrLf & "some other text" & vbCrLf & "(87) some text" 
result = regEx.Replace(s, " ") 

Ergebnis:

(57) some text some other text unknown nubmer of such lines 
(12) some text 
(54) sometext some Text unknown nubmer of such lines 
(51) some text 
(86) some text some Text some other text 
(87) some text 
+0

Das ist genau die Antwort für meine Frage. Aber es stellt sich heraus, dass mein Problem schlimmer ist als ich dachte. Danke für den Vorschlag. Das wird wirklich helfen. – Rahul

+1

Wenn keine späte Bindung benötigt wird, 'RegExp' in VBScript integriert ist, verwenden Sie' Set regEx = new RegExp'. – Lankymart

Verwandte Themen