在括号内获取文本

时间:2014-12-24 10:32:44

标签: c# regex

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

test (alpha)

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

2 个答案:

答案 0 :(得分:2)

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

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

DEMO

  • (?<=\()肯定的外观,它断言匹配必须以一个开头的副词(开头。

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

  • (?=\))肯定前瞻,断言匹配必须后跟一个)结束语。

IDEONE

答案 1 :(得分:1)

非正则表达式解决方案。

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的提取