Использование скобок в шаблоне регулярных выражений - PullRequest
9 голосов
/ 14 января 2010

У меня есть строка "Этот текст имеет некоторые (текст в скобках)". Поэтому я хочу получить текст в скобках, используя регулярные выражения в C #. Но скобка уже зарезервированный символ в регулярных выражениях. Так как это получить?

Обновление 1

для текста "afasdfas (2009)"

Я пытался (.)/s((/d+)) и (.) (\d+) и (.*)/s((/d/d/d/d)). Никто из них не работает. Есть идеи?

Ответы [ 5 ]

16 голосов
/ 14 января 2010

Как это:

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

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

Edit:

@ SealedSun, CannibalSmith: изменено. Я также использую @ "", но это был к / п от RegexBuddy: P

@ Грегг: Да, это действительно быстрее, но я предпочитаю упрощать ответы на такие вопросы.

7 голосов
/ 14 января 2010

Вы можете использовать обратную косую черту или Regex.Escape () .

4 голосов
/ 14 января 2010

Для любых символов, которые являются «специальными» для регулярного выражения, вы можете просто экранировать их обратной косой чертой «\». Так, например:

\([^\)]*\)

Захватит "(текст в круглых скобках)" в строке вашего примера.

[^\)]*

Должно быть немного безопаснее, чем просто "." в скобках, а также должен быть быстрее.

2 голосов
/ 14 января 2010

Вы можете избежать скобок, используя обратную косую черту. Лист выражения C # Reg

0 голосов
/ 11 ноября 2013

Просто добавьте \(, \) вокруг скобки. например:

(PatternInsideParenthesis)

будет так:

\( (PatternInsideParenthesis) \)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...