C# 在正则表达式模式中使用括号

C# 在正则表达式模式中使用括号,c#,regex,C#,Regex,我有一个字符串“这个文本有一些(括号内的文本)”。所以我想用C#中的正则表达式检索括号内的文本。但括号在正则表达式中已经是一个保留字符。那么如何得到它呢 更新1 因此,对于文本“afasdfas(2009)” 我试过()/s((/d+)和()(\d+)和(.*)/s((/d/d/d))。他们都没有工作。有什么想法吗?像这样: // For "This text has some (text inside parenthesis)" Regex RegexObj = new Regex(@"\((

我有一个字符串“这个文本有一些(括号内的文本)”。所以我想用C#中的正则表达式检索括号内的文本。但括号在正则表达式中已经是一个保留字符。那么如何得到它呢

更新1

因此,对于文本“afasdfas(2009)”

我试过
()/s((/d+)
()(\d+)
(.*)/s((/d/d/d))
。他们都没有工作。有什么想法吗?

像这样:

// For "This text has some (text inside parenthesis)"
Regex RegexObj = new Regex(@"\(([^\)]*)\)");

// For "afasdfas (2009)"
Regex RegexObj = new Regex(@"\((\d+)\)");
编辑:

@希莱德孙,食人族:变了。我也使用@“”,但这是来自RegexBuddy:p的c/p


@格雷格:是的,它确实更快,但我更愿意让回答这样的问题更简单。

你可以用反斜杠将括号转义

您可以使用反斜杠或。

对于正则表达式的“特殊”字符,您可以使用反斜杠“\”对其进行转义。例如:

\([^\)]*\)
将在示例字符串中捕获“(括号内的文本)”

[^\)]*
应该比括号内的“.”稍微安全一些,而且应该更快。

只需在括号周围添加
\(
\)
。 例如:

(图案内部装饰)

将是这样的:

\(
(PatternInsideParenthesis)
\)


我花了很长时间才发现第二个
\
是转义正则表达式转义字符
\
所必需的。我总是用逐字字符串编写正则表达式:
@“\(.*?”
我发现它更容易阅读。或者
Regex RegexObj=new Regex(@“\(.*?)”);
。不需要在字符类中转义
。仅供参考,正则表达式中的所有前斜杠都应该是反斜杠,即。,
/s
应该是
\s