我想从字符串中提取数字,格式如下:
string foo="something%4%something2%5%";
我如何用正则表达式写这个?
//pseudocode
foo.GetDigits("%"+{int}+"%").ToArray();
谢谢!
var matches = Regex.Matches(foo, @"%(\d+?)%").Cast<Match>()
.Select(m => m.Groups[1].Value)
.ToList();
代替 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());
您也可以使用此模式:
(\d+)(?=%)
这是一个示例代码:(未经测试)
MatchCollection mcol = System.Text.RegularExpression.Regex.Matches(foo,"(\d+)(?=%)");
foreach (Match m in mcol)
{
System.Diagnostic.Debug.Print(m.ToString());
}
此模式将捕获所有数字,然后是%
.
希望能帮助到你!