我有一个字符串“这个文本有一些(括号内的文字)”。所以我想使用C#中的正则表达式检索括号内的文本。但是括号已经是正则表达式中的保留字符。那怎么弄呢?
更新1
所以对于文字“afasdfas(2009)”
我尝试了(.)/s((/d+))
和(.) (\d+)
以及(.*)/s((/d/d/d/d))
。他们都没有工作。有什么想法吗?
答案 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)\)