TL; DR : регулярное выражение \[(.+?)\]\((.+?)\)
должно сработать.
Причина, по которой исходный шаблон не работает, заключается в том, что квантор +
по умолчанию "жадный" -он будет пытаться сопоставить как можно больше символов.Следовательно, .+
означает «как можно больше из всего, кроме символа новой строки ».Вы уже можете сказать, что закрывающая скобка точно соответствует определению.
Чтобы она работала правильно, вы должны сказать «как можно больше, до первой закрывающей скобки».Чтобы сделать это, вы должны либо заменить .+
на [^\]]+
([^\)]+
для второй группы), либо просто сделать вышеупомянутый квантификатор не слишком жадным, добавив его с ?
, что превращает обе группы захвата в (.+?)
.