迅速な正規表現の問題 (願っています)。
正規表現に基づいて、任意の文字列から部分文字列を識別する必要があります。
たとえば、次の文字列を使用します。
"Blogs, Joe (S0003-000292).html"
"bla bla bla S0003-000292 & so on"
"RE: S0003-000292"
「S0003-000292」の部分を抽出する必要があります (または、見つからない場合は例外にフラグを立てます)。
私が試したことに関しては、まあ、S0000-000000を識別するための大まかなパターンを書きました:
^\(S[0-9]{4}-[0-9]{6}\)$
そして、次のようにテストしてみました:
Dim regex As New Regex("Blogs, Joe (S0003-000292) Lorem Ipsum!")
Dim match As Match = regex.Match("^S[0-9]{4}-[0-9]{6}$")
If match.Success Then
console.writeline "Found: " & match.Value
Else
console.writeline "Not Found"
End If
ただし、これは常に Not Found になります。
では、実際に 2 つの質問があります。私のパターンの何が問題なのか、修正されたパターンを使用して部分文字列を抽出するにはどうすればよいでしょうか。
(.net 2 での作業)
編集: stema は正しい方向に私を指摘しました (つまり、^ と $ を削除する)-しかし、それは問題を解決しませんでした。私の主な問題は、パターンの代わりに RegEx コンストラクターで文字列を定義したことでした-これらを交換し、それはうまくいきました(私はカフェインの不足を非難します):
Dim regex As New Regex("S[0-9]{4}-[0-9]{6}")
Dim match As Match = regex.Match("Joe, Blogs (S0003-000292).html")
If match.Success = True Then
console.writeline "Found: " & match.Value
Else
console.writeline "Not Found"
End If