如何在c#中使用regEx从此字符串中获取值?解释正则表达式?

时间:2012-02-09 16:35:00

标签: c# regex

我有一个字符串,我需要解析它的值......

var msg = "Sometext can't do this. Blah blah blah Version id: 'xxx'";

如何使用正则表达式并在最后两个单引号之间获取文本? XXX 请注意{can not}中的第一个单引号 我正在寻找的价值总是在单引号的最后一组之间。 对正则表达式的简要解释也很棒。

非常感谢任何帮助,提示,示例。

3 个答案:

答案 0 :(得分:3)

这是最终的Regex

    (?<=')[^']*(?='$)

我使用的一般模式是

    (?<=prefix)find(?=suffix)

它找到位于前缀和后缀之间的模式。我们想要找到的是

    [^']*

这意味着只有单引号(')重复零次或多次。

最后,我们在最后搜索'$,而不仅仅是'。这意味着单引号必须位于该行的末尾。

答案 1 :(得分:2)

你可以试试这个

'\w*'

简单易懂,\ w - 查找字母数字字符,*使其查找任意数量的重复,并将其括在单引号中表示查找用单引号括起来的任意数字字母数字字符。

答案 2 :(得分:0)

在那个特定的string ...

@"'\w+'"

...将与"'xxx'"匹配,但如果您知道string将始终以"Version id: 'xxx'"结尾,并且您想要考虑可能被单引号​​包围的其他文字,那么可以用这个......

@"Version id: '(?<versionId>\w+)'$"

...然后使用此...

检索版本ID
Match match = Regex.Match(msg, @"Version id: '(?<versionId>\w+)'$");

if (match.Success)
{
    string versionId = match.Groups["versionId"].Value;

    // Perform further processing on versionId...
}

正则表达式如下所示: