Скобки / Парены в Ruby Regexp - PullRequest
       0

Скобки / Парены в Ruby Regexp

0 голосов
/ 07 февраля 2012

Я получаю предупреждение и ошибку:

rubytime.rb:18: warning: character class has `[' without escape
rubytime.rb:18: unmatched ): /^(\w+).*\([([\d]+)\+]?(\d\d):(\d\d)\)\s*$/

для этой строки:

if line =~ /^(\w+).*\([([\d]+)\+]?(\d\d):(\d\d)\)\s*$/

Я проверил несколько раз, и кажется, что паренсы / скобки выстраиваются в линию, хотя, возможно (я недавно сделал perl), я делаю ложное предположение о регулярных выражениях в Ruby.

Ответы [ 2 ]

2 голосов
/ 07 февраля 2012
[([\d]+)\+]?

Вы имели в виду ...

(([\d]+)\+)?

Кроме того, [\d] эквивалентно \d, так что вы могли бы написать это как ...

((\d+)\+)?

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

(?:(\d+)\+)?
0 голосов
/ 07 февраля 2012

Если вам нужны буквальные скобки, вам нужно их избежать.\[ \].Скобка без экранирования запускает «класс символов», например [abc], который принимает a или b или cОни не могут быть вложенными.

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