プロが教えるわが家の防犯対策術!

1回目は例えば
Dim r As New System.Text.RegularExpressions.Regex("\d+(?=.png)",
System.Text.RegularExpressions.RegexOptions.IgnoreCase)
Dim mc As System.Text.RegularExpressions.MatchCollection = r.Matches(output)
にして検索結果をコレクションで取得出来るのですが、
2回目以降、「検索条件だけ」を変えて検索するにはどうしたら良いのですか?

Dim r2 As New System.Text.RegularExpressions.Regex("abd",
System.Text.RegularExpressions.RegexOptions.IgnoreCase)
Dim mc2 As System.Text.RegularExpressions.MatchCollection = r.2Matches(output)

とすれば出来るのですが、何度も条件変更があるとコードが長すぎて見づらくなってしまいます。
最初に宣言したr,mcを再利用したいと思っています。
宜しくお願いします。

A 回答 (2件)

多分と言うか確実と思いますが正規の方法ではないでしょうね。


初級レベルは邪道ですから(無能なので)。

Imports System.Text.RegularExpressions '記載した方がすっきりするのでは?


Dim str As String() = New String() {"123.png", "abdgh", "456.jpg", "852.png", "yzabdgh"}

For Each st As String In New String() {"\d+(?=\.png)", "abd"}
For Each s In str
Dim re As New Regex(st, RegexOptions.IgnoreCase)
Dim mc As MatchCollection = re.Matches(s)

For Each m As Match In mc
Console.WriteLine("Pattern:{0} 検索値:{1} 抽出値:{2}", st, s, m.Value)
Next

Next
Next

結果:

Pattern:\d+(?=\.png) 検索値:123.png 抽出値:123
Pattern:\d+(?=\.png) 検索値:852.png 抽出値:852
Pattern:abd 検索値:abdgh 抽出値:abd
Pattern:abd 検索値:yzabdgh 抽出値:abd
    • good
    • 0
この回答へのお礼

正規の方法では無いのですいね、、、

確かにImports System.Text.RegularExpressionsを記載した方がすっきりします。
ありがとうございます。

お礼日時:2020/04/23 11:50

https://docs.microsoft.com/ja-jp/dotnet/api/syst …
> 正規表現を表す Regex オブジェクトをインスタンス化する。
> れを行うには、正規表現パターンを Regex コンストラクターに渡します。
> Regex オブジェクトは変更できません。
> 正規表現を使用して Regex オブジェクトをインスタンス化する場合、そのオブジェクトの正規表現は変更できません。


以下、いろいろと書いてあるので、一読することをおすすめします。
    • good
    • 0

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