Reputation: 6302
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;
Upvotes: 20
Views: 38321
Reputation: 682
try this:
var pattern = @".*public.*(.*\(.*\))";
Regex.Matches(input,pattern)
Upvotes: 0
Reputation: 5692
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.
Upvotes: 3
Reputation: 26930
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.
Upvotes: 42
Reputation: 25763
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
Upvotes: 12