2012-05-09 13 views
2

文字列から特定の一致を持つ特定の数字を抽出する方法がわかりません。文字列から値を抽出するための正規表現のヘルプ

例:

string myString = "blah blah **[10]** blah **[20]** and some more blah **[30]**"; 
Regex myIDsReg = new Regex(@"\*\*\[(\d+)\]\*\*"); 

どうやら正規表現は音です。

Match myMatch = myIDsReg.Match(myString); 

収量は「** [10] **」ですが、他には何もありません。代わりにMatchの10、20、30

+0

タイトルに「C#」などのプレフィックスを付けないでください。それがタグのためのものです。 –

答えて

1

私はこの

string myString = "blah blah **[10]** blah **[20]** and some more blah **[30]**"; 
Regex myIDsReg = new Regex(@"\*\*\[(\d+)\]\*\*"); 
string[] regexResult = (from Match match in myIDsReg.Matches(myString) select match.Groups[1].Value).ToArray(); 

を行うだろう

List<string> regexResult = (from Match match in myIDsReg.Matches(myString) select match.Groups[1].Value).ToList(); 

または

IEnumerable<string> regexResult = (from Match match in myIDsReg.Matches(myString) select match.Groups[1].Value); 

2人のうちの1人が好きです。

+0

私はそれが動作するために必要な方法を動作させるために少し修正する必要がありました。しかし、これは私にとって最高の答えでした。ありがとう。 –

4

使用Matches

私は、次の値を持つ配列を取得する方法を見つけ出すことはできません。

foreach (Match match in myIDsReg.Matches(myString)) 
{ 
    // etc... 
} 

オンラインで作業、それを参照してください:あなたはあなたにも対象となる出力を選択することができますideone

1

トリックが最善の答えを出しました。私はちょうどそれを私のために最もうまくいくように修正しなければならなかった。

string myString = "blah blah **[10]** blah **[20]** and some more blah **[30]**"; 
Regex myIDsReg = new Regex(@"\*\*\[(\d+)\]\*\*"); 
string[] regexResult = (from Match match in myIDsReg.Matches(myString) select match.Groups[1].Value).ToArray(); 

私は基本的に "select match.Value"を "select match.Groups [1] .Value"に置き換えました。

ありがとうございました!

関連する問題