我有一个这样的字符串:
所以基本上我需要一个正则表达式来获取_分隔符后的那4个数值。我确信这很简单但是Regex对我来说就像是一门外语!
答案 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"
}