常用表达

时间:2010-10-14 12:21:26

标签: c# regex

我需要从格式化的值中提取子字符串,如下所示:

“('item1'的原始参考号为:12345)”

我需要的文字是12345.“item1”可以更改,但字符串的其余部分应保持静态。

我目前有这样的事情:

  string myString = “(The original reference for ‘item1’ is: 12345)”;
  string regexMatch = "(The original reference for .* is: ";
  Regex regex = new Regex(regexMatch);
  Console.WriteLine(regex.Match(myString).ToString());

这只是错误,说我需要一个结束括号。有人能指出我在这个方向上正确的方向吗?

2 个答案:

答案 0 :(得分:2)

您需要转义(

string regexMatch = @"\(The original reference for .* is: ";

请注意@符号,这会导致编译器不处理字符串中的转义序列 否则,您需要从编译器中转义\本身,如下所示:"\\(..."

另外,你可能想要一个懒惰的通配符:

string regexMatch = @"\(The original reference for .*? is: ";

答案 1 :(得分:2)

你想要这个文本背景中的数字,对吗?所以试试这个正则表达式:

string regexMatch = @"(?<=\(The original reference for '[^']+' is: *)\d+(?=\))";

匹配的值将是数字(没有别的)。