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

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

更新1

所以对于文本“afasdfas(2009)”

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

您可以使用反斜杠或Regex.Escape() 。

像这样:

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

编辑:

@SealedSun,CannibalSmith:改变了。 我也使用@“”,但这是来自RegexBuddy的p / p:P

@Gregg:是的,它确实更快,但我更喜欢让它更简单地回答这些问题。

对于正则表达式“特殊”的任何字符,您可以使用反斜杠“\”来转义它们。 例如:

 \([^\)]*\) 

将在您的示例字符串中捕获“(括号内的文本)”。

 [^\)]* 

应该比“更安全”。 在括号内,也应该更快。

您可以使用反斜杠转义括号。 C#Reg Expression Cheet Sheet

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

(PatternInsideParenthesis)

将是这样的:

\( (PatternInsideParenthesis) \)