У меня возникли проблемы с захватом цифры в строке этого формата (t|b|bug_|task_|)1234
с использованием регулярного выражения bash. Приведенное ниже не работает:
[[ $current_branch =~ ^(t|b|bug_|task_|)([0-9]+) ]]
Но как только я изменю это на что-то вроде этого:
[[ $current_branch =~ ^(t|b|bug_|task_)([0-9]+) ]]
это работает, но, конечно, это неправильно, потому что это не охватывает случай, когда нет префиксов. Я понимаю, что в этом случае я мог бы сделать
[[ $current_branch =~ ^(t|b|bug_|task_)?([0-9]+) ]]
и добиться того же результата, но я хотел бы знать, почему второй пример не работает. Например, это регулярное выражение отлично работает в Ruby.
(Это на GNU bash, версия 3.2.48(1)-релиз (x86_64-apple-darwin11)
, OSX Lion)