我有一个包含以下内容的字符串:
test (alpha)
我想在括号内输入文字,以便我只有alpha
。这可以使用诸如\(([^)]*)\)
的正则表达式来实现。有更简单的方法吗?
答案 0 :(得分:2)
你的正则表达式很简单。如果您不想创建两个索引,如果您想要在没有任何捕获组的情况下实现此目的,那么您可以使用如下所示的基于外观的正则表达式。
Regex rgx = new Regex(@"(?<=\()[^()]*(?=\))");
(?<=\()
肯定的外观,它断言匹配必须以一个开头的副词(
开头。
[()]*
匹配任何字符,但不匹配(
或)
零次或多次。
(?=\))
肯定前瞻,断言匹配必须后跟一个)
结束语。
答案 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的提取