我了解这是一个琐碎的正则表达式问题。但这也许不仅对我有用。
我有markdown文件,我需要更新其链接。降价链接的格式为[TITLE](HREF)
。我有模式/\[*\]\(.*?\)/
,但返回错误结果](HREF)
。
const line = 'Markdown text [link title](/link/href/name.md#anchor)'
const res = line.match(/\[*\]\(.*?\)/gm);
console.log(res);
那么如何只得到HREF
(例如,应该是/link/href/name.md#anchor
)
答案 0 :(得分:2)
您可以使用
const line = 'Markdown text [link title](/link/href/name.md#anchor)'
const reg = /\[[^\][]*\]\(([^()]*)\)/g;
let m, res = [];
while (m = reg.exec(line)) {
res.push(m[1]);
}
console.log(res);
/\[[^\][]*\]\(([^()]*)\)/g
正则表达式匹配:
\[
-一个[
字符[^\][]*
-除[
和]
以外的0个或更多字符\]
-一个]
字符\(
-一个(
字符([^()]*)
-第1组:除(
和)
以外的任何0+个字符\)
-一个)
字符。您可以使用最新的ECMAScript实现
const line = 'Markdown text [link title](/link/href/name.md#anchor)'
console.log(line.match( /(?<=\[[^\][]*\]\()[^()]*(?=\))/g ));
答案 1 :(得分:0)