VB6での正規表現について


小坊主LV1  2006-01-24 08:28:11  No: 93803

今、VB6にて正規表現の勉強をしているのですが、
目的の動作をしないので、お力を貸して下さい。
以下、ソースです。
'-----------------------------------------
Static objRegExp As RegExp
Dim MC           As MatchCollection
Dim I            As Match
Buffer = "$今日$  $僕は$  $正規表現を$  $勉強します$"
If (objRegExp Is Nothing) Then Set objRegExp = CreateObject("VBScript.RegExp")
With objRegExp
  .Pattern = "$[^   ]{1,}$"
  .MultiLine = False
Set MC = .Execute(Buffer)
End With
For Each I In MC
Debug.Print I.Value
Next I
'-----------------------------------------

.Pattern = "$[^   ]{1,}$"
の所、$で始まって、スペース以外の文字列を無限に許可し、
$で終わるパターンを書いています。
Debug.Print I.Value
で返ってくるのは、
$今日$
という文字だけなのですが、これを
$今日$
$僕は$
$正規表現を$
$勉強します$
と四つ列挙するには、どこが間違っているのか
教えて頂けたらと思い、書き込みました。
よろしくお願いします。


ガッ  2006-01-24 08:48:45  No: 93804

適当ですが。

Private Sub Form_Load()
    Const s = "$今日$  $僕は$  $正規表現を$  $勉強します$"
    Dim x As RegExp
    Dim v As Match
    
    Set x = New RegExp
    x.Pattern = "[$][^  ]*[$]"
    x.Global = True
    For Each v In x.Execute(s)
        Debug.Print v.Value
    Next
End Sub


小坊主LV1  2006-01-25 06:09:50  No: 93805

ガッ様、レスありがとうございます。
教えて頂いたソースで無事に四つ取り出せました。
X.Global = True  をしていないからでした。
.Pattern = "$[^   ]{1,}$"  も変な設定をしていたみたいです。

本当にありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加