在括号内获取文本

我有一个包含以下内容的字符串:

test (alpha) 

我想在括号内得到文本,以便我只有alpha 。 这可以使用正则表达式来实现,例如\(([^)]*)\) 。 有没有更简单的方法?

你的正则表达式很简单。 如果您不想创建两个索引,如果您想在没有任何捕获组的情况下实现此目的,那么您可以使用如下所示的基于外观的正则表达式。

 Regex rgx = new Regex(@"(?<=\()[^()]*(?=\))"); 

DEMO

  • (?<=\()正向后观,断言匹配必须以一个开头的paranthesis开头(

  • [()]*匹配任何字符,但不匹配()零次或多次。

  • (?=\))正向前瞻,断言匹配必须遵循a )关闭paranthesis。

IDEONE

非正则表达式解决方案。

 string test = "test (alpha)"; int posFirst = test.IndexOf("("); int posLast = test.LastIndexOf(")"); if(posFirst>= 0 && posLast >= 0) { string result = test.Substring(posFirst + 1, (posLast - posFirst -1)); Console.WriteLine(result); } 

这将把第一个打开的paren中的所有内容都带到最后一个打开的paren中。
如果你想只获得第一个关闭的paren,那么使用IndexOf更改posLast的提取