gpt4 book ai didi

javascript - 非贪婪向后 JavaScript 正则表达式?

转载 作者:行者123 更新时间:2023-12-03 06:13:24 25 4
gpt4 key购买 nike

我有以下 JavaScript 正则表达式:

/\!\[(.*?)\]\((.+?) \"(.*?)\"\)/g

适用于如下字符串:

![test](https://github.com/adam-p/markdown-here/raw/master/src/common/images/icon48.png)<br />![test](https://github.com/adam-p/markdown-here/raw/master/src/common/images/icon48.png "test")<br />![test](https://github.com/adam-p/markdown-here/raw/master/src/common/images/icon48.png)<br />![test](https://github.com/adam-p/markdown-here/raw/master/src/common/images/icon48.png "test")

regex101 link

我遇到的问题是搜索字符串中应该有 4 个不同的 Markdown 标签,其中两个应该匹配,但是返回的两个匹配项包含 Markdown 标签。

这似乎归结为正则表达式解析器循环遍历,获取第一个可能的匹配起点并继续搜索匹配的其余部分,而不考虑匹配中存在稍后可能的起点这一事实。我以为我可以使用非贪婪的 ? 修饰符来解决这个问题,但事实似乎并非如此。

有什么建议吗?

最佳答案

两个 Markdown 链接没有说明,但说明在正则表达式中不是可选的。

/\!\[(.*?)\]\((.+?)(?: \"(.*?)\")?\)/g

最好排除链接地址部分中的某些字符,以避免像这样的意外长匹配(尽管如果需要稳健性,您应该使用现有的 Markdown 解析器)。

/\!\[(.*?)\]\(([^)]+?)(?: \"(.*?)\")?\)/g

关于javascript - 非贪婪向后 JavaScript 正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39218193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com