2

文字列から特定の一致を持つ特定の数字を抽出する方法がわかりません。

例:

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

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

Match myMatch = myIDsReg.Match(myString);

"**[10]**" が返されますが、他には何もありません。

次の値を持つ配列を取得する方法がわかりません: 10、20、30

4

3 に答える 3

4

Matchesの代わりに使用してくださいMatch

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

オンラインで動作することを確認してください:ideone

于 2012-05-09T21:57:38.420 に答える
1

Trikksがベストアンサーを思いついた。自分に最適なように少し変更する必要がありました。

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();

基本的に「selectmatch.Value」を「selectmatch.Groups[1].Value」に置き換えました。

ご協力いただきありがとうございます!

于 2012-05-09T22:19:39.067 に答える
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つを好むだろう

于 2012-05-09T22:05:04.697 に答える