在正则表达式模式中使用括号
我有一个字符串“这个文本有一些(括号内的文字)”。 所以我想使用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)\)