在括号内获取文本
我有一个包含以下内容的字符串:
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的提取