Regex 使用正则表达式查找括号之间的字符

Regex 使用正则表达式查找括号之间的字符,regex,regular-language,Regex,Regular Language,我正试图处理一个包含大量括号的字符串中的文本,所以我想我应该使用正则表达式来处理它 我在这里搜索并找到了一个很好的解决方案: 并将其改编为我的代码,如下所示: \(([^(]+)\) 尝试编写此代码时: string s = "(hey (brother)) and (hey sister)"; string p = "\\(([^(]+)\\)"; Match m = Regex.Match(s, p); Console.Write(m.Value+"\n"); 我得到以下结果: (br

我正试图处理一个包含大量括号的字符串中的文本,所以我想我应该使用正则表达式来处理它

我在这里搜索并找到了一个很好的解决方案:

并将其改编为我的代码,如下所示:

\(([^(]+)\)
尝试编写此代码时:

string s = "(hey (brother)) and (hey sister)";
string p = "\\(([^(]+)\\)";
Match m = Regex.Match(s, p);
Console.Write(m.Value+"\n");
我得到以下结果:

(brother))

我想在找到第一个“)”时停止表达,但它没有这样做。有人能帮我解决吗

如果要在到达一个字符时停止,还需要排除结束字符:

\(([^()]+)\)

您的正则表达式试图在停在
字符之前匹配尽可能多的字符。字符串中有三个
字符,但从
b
开始,正则表达式无法匹配第三个
,因为在
b
和第三个
之间有一个
)字符,而
[]
括号之间的模式不匹配。但是正则表达式可以(而且确实可以)使用第二个
匹配其模式中的

请注意,在您链接到的页面上,从中获得此regexp的答案明确表示,当括号嵌套在彼此内部时,它将不起作用

如果您将regexp编写为:

\(([^()]+)\)

点网可以做
平衡组
计数结构。您是否正在尝试解析所有文本,如
hey
brother
?还是仅内部(非嵌套)文本?