重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

いつもお世話になっております。
また正規表現がわからなくなってしまったのですが、
お助け願えないでしょうか。

Strの中にはこのようなものが入っています。
Str="あいうえお=====かきくけこ=====さしすせそたちつてと=====まみむめも=====なにぬねの"

Dim r As Regex
Dim m As Match
Dim StrR As String
r = New Regex("=====.+=====")
m = r.Match(Str)
While m.Success
StrR = m.Value
m = m.NextMatch()
End While

順番に
StrR="=====かきくけこ====="
StrR="=====まみむめも====="
を取得したいのですが、
上記のような書き方だと、
StrR=====かきくけこ=====さしすせそたちつてと=====まみむめも====="
を取得してしまいます。
回数の指定など色々試してはみたのですが、
どうしても目的のとおりにすることができず困っておりまして、
書き方をご教示頂きたくよろしくお願い致します。

A 回答 (2件)

あ、この場合



+だから
+? 1 回以上でできるだけ少ない繰り返しを指定します (最短一致の + と同じ)。
を紹介しなきゃ駄目だったか

r = New Regex("=====.+?=====")


'===========================
Imports System.Text.RegularExpressions

Module Module1

Sub Main()
Dim r As Regex
Dim m As Match
Dim Str As String = "あいうえお=====かきくけこ=====さしすせそたちつてと=====まみむめも=====なにぬねの"
Dim StrR As String
r = New Regex("=====.+?=====") '?を加えた
m = r.Match(Str)
While m.Success
StrR = m.Value
Console.WriteLine(StrR)
m = m.NextMatch()
End While

End Sub

End Module

で動くはず
    • good
    • 0
この回答へのお礼

出来ました!
ご丁寧に教えてくださって本当にありがとうございます。
?は試したつもりだったのですが出来なかったように思っていました。
正規表現はすごく苦手なので、早く慣れたいと思います。
ありがとうございました。

お礼日時:2007/07/16 01:21

質問文あまりよく読んでないけど


http://msdn2.microsoft.com/ja-jp/library/3206d37 …


>*? できるだけ少ない繰り返しを処理する最初の一致を指定します (最短一致の * と同じ)。

例(未解決だが)
http://oshiete1.goo.ne.jp/qa3130797.html
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!