正则表达式,用于获取用作分隔符的下划线之后的文本

时间:2011-12-21 20:03:38

标签: c# regex string text

我有一个这样的字符串:

  • blah blah blah_0123

所以基本上我需要一个正则表达式来获取_分隔符后的那4个数值。我确信这很简单但是Regex对我来说就像是一门外语!

2 个答案:

答案 0 :(得分:4)

这就是这个正则表达式:

_([0-9]+)

(捕获组1保存数字。)


或者如果您的引擎支持lookbehinds(据我记得,C#不是这种情况):

(?<=_)[0-9]+

(捕获组0保存数字。)


(...)表示一个捕获组。在您的匹配对象中,您可以通过yourMatch.Groups[index].Value的索引访问它们,也可以通过(?<name>...)按名称yourMatch.Groups[name].Value命名您的捕获组。然后,该值将保存该特定组的子表达式匹配的任何内容(在您的情况下为4位数字)。


此外,如果您只想要正则表达式匹配,如果这些正好是4个数字字符,则 然后将+替换为{4}\b

编辑:正如Alan Moore正确地指出那些被称为“捕获组”,而不是“捕获组”。我需要更多的睡眠。

答案 1 :(得分:2)

正则表达式:_(?<number>[0-9]+)

var match = new Regex("_(?<number>[0-9]+)").Match("blah blah blah_0123");

if(match.Success)
{
    var value = match.Groups["number"].Value;
    var number = Int.Parse(value);

    Console.WriteLine(value);  // this will write "0123"
    Console.WriteLine(number); // this will write "123"
}