如果它位于百分号旁边,如何从字符串中提取数字?

时间:2014-02-05 04:21:01

标签: c# regex

我需要解析大量字符串,并且当它们位于百分号旁边时,我想从它们中提取数字,并且只有当它们位于百分号旁边时,否则返回空字符串。示例字符串将是

  

“43-20如果你能找到通过岩浆河的路,我估计有60%的几率你将获得神圣力量之一。”

我想只提取60.我相信我的问题的答案涉及正则表达式。

3 个答案:

答案 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