如何使我的捕获链接匹配器“懒惰”

How can I make my capturing link matcher "lazy"?

本文关键字:懒惰 链接 何使 我的      更新时间:2023-09-26

在 ECMAScript 中,这是我正在使用的正则表达式:

replace(/'[(.+)'s+->'s+([^']]+)]/g, '<a class=adl_btnlnk href="$2">$1</a>');

对于以下字符串来说,这很好:

"[INNER'"',';!@#$%^&*gobbeldygook ->    -> -> http://li.nk?u=r&l]"

。它完全符合我的需求。 但是当我有:

"[INNER'"',';!@#$%^&*gobbeldygook ->    -> -> http://li.nk?u=r&l] laksjfalksdjf98723&*(*&(*@&#$ [foo -> http://li.nk]"

它会导致一个断开的链接:

"<a class=adl_btnlnk href="http://li.nk">INNER"',';!@#$%^&*gobbeldygook ->    -> -> http://li.nk?u=r&l] laksjfalksdjf98723&*(*&(*@&#$ [foo</a>"

我怎样才能进入:

"<a class=adl_btnlnk href="http://li.nk?u=r&l">INNER"',';!@#$%^&*gobbeldygook ->    -></a> laksjfalksdjf98723&*(*&(*@&#$ <a class=adl_btnlink href="http://li.nk">foo</a>"
您可以通过

附加?来使+量词占用尽可能少的时间。但是您必须稍微更改一下正则表达式,以便尽可能多地排除第一组的]字符。此外,最后一组不应包含箭头:

/'[([^']]+?)'s+->'s+([^->']]+?)]/g