2016-05-17 7 views
1

私はこのようなテキストを持っています。正規表現を使って未知数の改行を取り除く方法

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

は私の代わりに改行の空間分離を意味し

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

にそれを減らしたいです。

正規表現の検索と置換を使用することは可能ですかスクリプトを書く必要がありますか?

私が使用して見つけることができる午前:\(\d{1,2}\)([\w\W]*?)\(\d{1,2}\)

それは私のデータが矛盾していることが判明し、開始と終了を定義する必要があります。

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

+0

例 - http://stackoverflow.com/a/36624396/692942をこの質問は、さまざまなものによって何度も答えられています。 – Lankymart

+0

指摘していただきありがとうございます。それを見て、これが重複しているかどうかを見てみましょう。 – Rahul

+0

私はその例が重複していると言っているのではなく、['[vbscript] [regex] is:question replace'のすべての結果を見る前に複数回質問されているだけです。(http://stackoverflow.com /検索?q =%5Bvbscript%5D +%5Bregex%5D +は%3Aquestion + replace)は[so]です。 – Lankymart

答えて

4

あなたは正規表現ベースの交換を必要としているようです。

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

を使用し、スペースで置き換えてください。この式は、( + digit(s)+ )に続くすべての改行に一致します。

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, " ") 

結果を参照してください: `` RegExp`交換してください() `メソッドを使用する方法の

(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

これはまさに私の質問の答えです。しかし、私の問題は私が思ったよりも悪いことが判明しました。提案ありがとう。これは本当に助けになるでしょう。 – Rahul

+1

遅延バインディングの必要がないので、 'RegExp'はVBScriptに組み込まれています。' Set regEx = new RegExp'を使用してください。 – Lankymart

関連する問題