我几乎找到了一个正则表达式问题,只是一件小事。
我想要得到这个:
and so use [chalk](#api).red(string[, options])
进入这个:
and so use chalk.red(string[, options])
我有这个:
var md = 'and so use chalk.red(string[, options])';
console.log(md.replace(/(\[.*?\]\()(.+?)(\))/g, '$1'))
完全匹配[x](y)
。但是,$1
会返回[chalk](
。我希望它能够返回chalk
,而我却不知道如何做到这一点。
这在所有情况下都能解决这个问题吗?
/(\[(.*?)\]\()(.+?)(\))/g
答案 0 :(得分:2)
让我们来看看你目前的正则表达式做什么
/(\[(.*?)\]\()(.+?)(\))/g
1st Capturing group (\[(.*?)\]\()
\[ matches the character [ literally
2nd Capturing group (.*?)
.*? matches any character (except newline)
Quantifier: *? Between zero and unlimited times, as few times as possible, expanding as needed [lazy]
\] matches the character ] literally
\( matches the character ( literally
3rd Capturing group (.+?)
.+? matches any character (except newline)
Quantifier: +? Between one and unlimited times, as few times as possible, expanding as needed [lazy]
4th Capturing group (\))
\) matches the character ) literally
正如您所看到的,您的第一个捕获组包含您的第二个捕获组。第二个捕获组是chalk
,第一个捕获组是[chalk](
。
console.log(md.replace(/(\[.*?\]\()(.+?)(\))/g, '$2'))
\[(.*?)\]\((.+?)\)
如果您是正则表达式的新手,我强烈推荐使用regex101.com之类的正则表达式工具来查看您的群组是什么以及您的正则表达式究竟在做什么。
继承你为我救的正念我 https://regex101.com/r/tZ6yK9/1
答案 1 :(得分:1)
使用此RegExp:
/\[([^\]]+)\][^\)]+\)/g
如果你打电话给这个
'and so use [chalk](#api).red(string[, options])'.replace(/\[([^\]]+)\][^\)]+\)/g, '$1')
它返回此
“所以使用chalk.red(string [,options])”