【发布时间】:2012-12-12 10:09:20
【问题描述】:
我想从字符串中提取数字,格式如下:
string foo="something%4%something2%5%";
我如何用正则表达式写这个?
//pseudocode
foo.GetDigits("%"+{int}+"%").ToArray();
谢谢!
【问题讨论】:
我想从字符串中提取数字,格式如下:
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();
【讨论】:
2,因为它前面没有%。话虽如此,从2 是否应该被提取的问题中还不清楚......
GetDigits("%"+{int}+"%") 让我觉得它必须在两个%s 之间
?),因为 \d 不会与 % 重叠。
您可以使用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());
【讨论】:
str= "2222aaa222"; 吗?
你也可以使用这个模式:
(\d+)(?=%)
这是一个示例代码:(未经测试)
MatchCollection mcol = System.Text.RegularExpression.Regex.Matches(foo,"(\d+)(?=%)");
foreach (Match m in mcol)
{
System.Diagnostic.Debug.Print(m.ToString());
}
此模式将捕获所有数字,后跟%。
希望对你有帮助!
【讨论】: