获取Regex中字符之间的数字

时间:2018-01-07 08:42:28

标签: c# regex

难以创建正则表达式。
我有这样的文字:
“L \”:0.01690502,\ “C \”:0.01690502,\ “V \”:33.76590433"
我只需要在C \“之后的数字:提取,这是我现在拥有的。

        var regex = new Regex(@"(?<=C\\"":)\d +.\d + (?=\s *,\\)");
        var test = regex.Match(content).ToString();
        decimal.TryParse(test, out decimal closingPrice);

4 个答案:

答案 0 :(得分:3)

要在class User(AbstractBaseUser,PermissionsMixin, UserStamp): account = models.ForeignKey(Account, blank=True, null=True, related_name='owner',on_delete=models.CASCADE) 之后提取数字,您可以捕获组中的C\":

C\\":(\d+.\d+)

你也可以使用积极的外观:

(?<=C\\":)\d+.\d+

答案 1 :(得分:2)

您可以使用此代码获取所有字母和数字对。

var regex = new Regex("(?<letter>[A-Z])[^:]+:(?<number>[^,\"]+)");
var input = "L\":0.01690502,\"C\":0.01690502,\"V\":33.76590433";
var matches = regex.Matches(input).Cast<Match>().ToArray();

foreach (var match in matches)
    Console.WriteLine($"Letter: {match.Groups["letter"].Value}, number: {match.Groups["number"].Value}");

如果您只需要来自&#34; C&#34;信中你可以使用这个linq表达式:

var cNumber = matches.FirstOrDefault(m => m.Groups["letter"].Value == "C")?.Groups["number"].Value ?? "";

正则表达式解释:

(?<letter>[A-Z]) // capture single letter
[^:]+ // skip all chars until ':'
: // colon
(?<number>[^,"]+) // capture all until ',' or '"'

工作demo

答案 2 :(得分:1)

用它修正了它。

 var regex = new Regex("(?<=C\\\":)\\d+.\\d+(?=\\s*,)");
 var test = regex.Match(content).ToString();

答案 3 :(得分:1)

用于C#的字符串文字:

@"C\\"":([0-9]+.[0-9]+),"

如果您只想过滤有效数字:

prnt