C# Regex match anything inside Parentheses

2019-02-03 08:12发布

I want to match anything inside parentheses but the result must exclude the parentheses as well.

Examples:
Initialize(P90W)
Brake(45X)

Result:
990W
45X

note results without the Parentheses.

I've been trying to make this work but to no avail I tried a few variations but I know it's a simple thing I'm missing and I don't want to go using Replace to achieve it.

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条回答
手持菜刀,她持情操
2楼-- · 2019-02-03 08:57

try this:

var pattern = @".*public.*(.*\(.*\))";
Regex.Matches(input,pattern)
查看更多
The star\"
3楼-- · 2019-02-03 09:06
Regex searchTerm = new Regex(@"\(([^\)]*)\)");
查看更多
我只想做你的唯一
4楼-- · 2019-02-03 09:07

try regex @"\((.*?)\)"

EDIT: Also the result will be group 1 not 0, group 0 should contain the entire regex result, not the first parenthesized value

查看更多
劳资没心,怎么记你
5楼-- · 2019-02-03 09:14

Remove the inner paranthesis and try again:

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

When you do not escape paranthesis in regex, if you are using group match it will only return the content within the paranthesis. So if you have, new Regex(@'(a)(b))', match 1 will be a and match 2 will be b. Match 0 is the entire match.

查看更多
来,给爷笑一个
6楼-- · 2019-02-03 09:15

Some people accuse me of using zero width assertions all the time:

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

But they do exactly what you want. Don't capture what you don't want to capture.

查看更多
登录 后发表回答