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

时间:2010-01-14 18:17:01

标签: c# regex

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

更新1

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

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

5 个答案:

答案 0 :(得分:16)

像这样:

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

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

编辑:

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

@Gregg:是的,确实更快,但我更愿意回答这些问题更简单。

答案 1 :(得分:7)

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

答案 2 :(得分:4)

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

\([^\)]*\)

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

[^\)]*

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

答案 3 :(得分:2)

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

答案 4 :(得分:0)

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

  

(PatternInsideParenthesis)

将是这样的:

  

\((PatternInsideParenthesis)\)