0

我想从字符串中提取数字,格式如下:

string foo="something%4%something2%5%";

我如何用正则表达式写这个?

//pseudocode
foo.GetDigits("%"+{int}+"%").ToArray();

谢谢!

4

3 回答 3

7
var matches = Regex.Matches(foo, @"%(\d+?)%").Cast<Match>()
                   .Select(m => m.Groups[1].Value)
                   .ToList();
于 2012-12-12T10:11:21.650 回答
4

代替 Regex,您可以使用char.IsDigit方法从字符串中获取所有数字。

string str = "something%4%something2%5%";
string digitstr = new string(str.Where(r => char.IsDigit(r)).ToArray());

或更短:

string digitstr = new string(str.Where(char.IsDigit).ToArray());
于 2012-12-12T10:11:30.573 回答
0

您也可以使用此模式:

(\d+)(?=%)

这是一个示例代码:(未经测试)

MatchCollection mcol = System.Text.RegularExpression.Regex.Matches(foo,"(\d+)(?=%)");

foreach (Match m in mcol)
{
   System.Diagnostic.Debug.Print(m.ToString());
}

此模式将捕获所有数字,然后是%.

希望能帮助到你!

于 2012-12-12T11:38:47.617 回答