C# 在正则表达式模式中使用括号
我有一个字符串“这个文本有一些(括号内的文本)”。所以我想用C#中的正则表达式检索括号内的文本。但括号在正则表达式中已经是一个保留字符。那么如何得到它呢 更新1 因此,对于文本“afasdfas(2009)” 我试过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(@"\((
()/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
。