C#正则表达式匹配数字后跟闭括号

时间:2016-02-25 17:40:01

标签: c# regex

我正在尝试匹配一个数字后跟一个右括号:“2)”,但不匹配开括号和右括号中包含的数字:“(2)”。这个正则表达式有效,除非数字有多个数字:

string text = "blah blah: 1) blah blah; and 2) blah blah.  (1) Blah blah; and (10) blah blah.";
string pattern = @"[^(]\d{1,}\)";
MatchCollection matches = new Regex(pattern).Matches(text);
foreach (Match m in matches)
{
    Console.WriteLine(m);
}

// output:
// 1) 
// 2)
// 10)  This should not be matched, since it is really (10)

如何修改此正则表达式以匹配后面有一个右括号但前面没有左括号的数字?

3 个答案:

答案 0 :(得分:1)

实际上,您希望匹配左括号,数字和右括号。

string pattern = @"[^(]\d+\)";

答案 1 :(得分:1)

在您的表达式 10) 匹配如下:

  • 1 [^(]
  • 0) \d{1,}\)

试试这个:

string pattern = @"[^(\d]\d+\)"

避免破坏号码。

答案 2 :(得分:0)

尝试

string pattern = @"(?<=\s)\d+(?=\))"

根据您的输入,它将匹配数字(以粗体显示)

等等等等等等等等等等等等等等等等等等等等等等等。等等 2 )等等。 (1)Blah blah; (10)blah blah.1