использование регулярного выражения () для поиска в указанной группе - PullRequest
0 голосов
/ 24 декабря 2011

Я хочу вернуть материал между (и).

Но () используются для групп, и с escape \ я получаю ошибку:

Pattern p = Pattern.compile("(\(.*\))");

неожиданноchar: '('

Как я могу предотвратить это?

Ср. 13 октября 2010 г. 20:00:11 +0200 (CEST)

Вт. 12 октября 2010 г.21:27:48 +0200 (CEST)

Вт 12 окт. 2010 04:44:57 +0200 (Западная Европа (zomertijd))

Вт 12 окт. 2010 03:10:22+0200 (CEST)

Пн, 11 октября 2010 23:10:04 +0200 (CEST)

Пн, 11 октября 2010 20:56:27 +0200 (CEST)

(я использовал java)

Ответы [ 3 ]

2 голосов
/ 24 декабря 2011

Вам также необходимо избежать обратных слешей; также я думаю, что вы хотите убежать в другой позиции (а точнее о том, что вы хотите сопоставить):

Pattern p = Pattern.compile("\\(([^()]*)\\)");

Пояснение:

\\(     # literal (
(       # start capturing group
 [^()]* # any number of characters except parentheses
)       # end capturing group
\\)     # literal )
1 голос
/ 24 декабря 2011

В строках Java вы должны экранировать символ '\\', попробуйте:

Pattern p = Pattern.compile("(\\(.*\\))");
1 голос
/ 24 декабря 2011

Вам нужно сбежать от побега:

"(\\(.*?\\))"

Обратите внимание, что я также использовал не жадную версию "match any".

Двойное экранирование связано с тем, что в строковом литерале обратная косая черта используется для escape-последовательностей (например, \n), поэтому, если вы хотите использовать обратную косую черту в вашей строке, вам нужно экранировать ее с другой обратной косой чертой.

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