Соответствующие фигурные скобки в рубине с персонажем впереди - PullRequest
2 голосов
/ 25 марта 2011

Я прочитал довольно много постов здесь для сопоставления вложенных скобок в Ruby с помощью Regexp. Однако я не могу приспособить это к моей ситуации, и я застрял. Книга Ruby 1.9 использует следующее, чтобы соответствовать набору вложенных фигурных скобок

/\A(?<brace_expression>{([^{}]|\g<brace_expression>)*})\Z/x

Я пытаюсь изменить это тремя способами. 1. Я хочу использовать скобки вместо фигурных скобок, 2. Мне нужен символ перед (например, символ хеша), и 3. Я хочу сопоставить в любом месте строки, а не только в начале и конце. Вот что у меня есть.

/(#(?<brace_expression>\(([^\(\)]|\g<brace_expression>)*\)))/x

Буду признателен за любую помощь в получении правильного выражения.

1 Ответ

2 голосов
/ 25 марта 2011

Использование модификатора регулярного выражения x включает комментарии в регулярном выражении. Таким образом, # в вашем регулярном выражении интерпретируется как символ комментария, а остальное регулярное выражение игнорируется. Вам нужно будет либо экранировать #, либо удалить модификатор x.

Кстати: нет необходимости избегать скобок внутри [].

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