C#正则表达式匹配括号内的任何内容

时间:2011-12-15 20:33:06

标签: c# regex parentheses

我想匹配括号内的任何内容,但结果也必须排除括号。

示例:
初始化(P90W)
刹车(45X)

结果:
990W
45X

注意没有圆括号的结果。

我一直在尝试做这项工作,但无济于事我尝试了一些变化,但我知道这是一件很简单的事我不知道而且我不想使用Replace来实现它。

var item = "Brake(45X)"
Regex searchTerm = new Regex(@"\((.*)\)");
var value = (searchTerm.Match(item).Groups.Count > 0) ?
    searchTerm.Match(item).Groups[0].Value : string.Empty;

5 个答案:

答案 0 :(得分:32)

有些人指责我一直使用零宽度断言:

resultString = Regex.Match(subjectString, @"(?<=\().+?(?=\))").Value;

但他们完全按照你的意愿行事。不要捕捉你不想捕捉的东西。

答案 1 :(得分:11)

尝试正则表达式@"\((.*?)\)"

编辑:结果将是组1而不是0,组0应该包含整个正则表达式结果,而不是第一个带括号的值

答案 2 :(得分:3)

删除内部副词并再试一次:

new Regex(@"(\([^\)]+\))");

如果你没有在正则表达式中转义paranthesis,如果你正在使用组匹配,它将只返回paranthesis中的内容。所以如果你有,new Regex(@'(a)(b))',匹配1将是a,匹配2将是b。比赛0是整场比赛。

答案 3 :(得分:0)

Regex searchTerm = new Regex(@"\(([^\)]*)\)");

答案 4 :(得分:0)

试试这个:

var pattern = @".*public.*(.*\(.*\))";
Regex.Matches(input,pattern)