我需要解析大量字符串,并且当它们位于百分号旁边时,我想从它们中提取数字,并且只有当它们位于百分号旁边时,否则返回空字符串。示例字符串将是
“43-20如果你能找到通过岩浆河的路,我估计有60%的几率你将获得神圣力量之一。”
我想只提取60.我相信我的问题的答案涉及正则表达式。
答案 0 :(得分:4)
这是一个在百分号前找到连续数字的正则表达式。
string text = "43-20If you can find a way through the river of magma, I calculate a 60% chance you will arrive at one of the sources of sacred power. Here's another: 100%.";
foreach (Match match in Regex.Matches(text, @"(\d+)%"))
{
Console.WriteLine("Found: " + match.Groups[1].Value);
}
答案 1 :(得分:3)
好吧,如果你想提取值而不仅仅是检查是否匹配,那么我会使用这个正则表达式:
(?<num>\d+)(?:\%)
然后你可以通过以下方式获得号码:
string number = Regex.Match(text, @"(?<num>\d+)(?:\%)").Groups["num"].Value;
干杯
编辑:这被称为“命名捕获组”,而第二个被称为非捕获组。
答案 2 :(得分:1)
这个正则表达式就足够了(\d+)%
请参阅此处Regex sample Test