gpt4 book ai didi

javascript - 正则表达式以匹配本地 Markdown 链接

转载 作者:行者123 更新时间:2023-11-29 21:04:51 24 4
gpt4 key购买 nike

我正在尝试创建一个匹配 Markdown 网址的正则表达式,但忽略它前后的内容。它应该只匹配指向本地文件的本地 markdown url,并忽略指向外部网站的 url。示例:

"dddd [应忽略的链接](http://google.com/) lorem ipsum lorem ips sum loreerm [不应忽略的链接](../../../filepath/folder/some-other-folder/another-folder/one-last-folder/file-example.html).lorem ipsum lorem"

应该只匹配第二个链接。目前,它匹配一切。我的正则表达式可以满足我的需要,但这似乎是我发现的主要边缘情况。

我目前拥有的:

/(!?\[.*?\]\((?!.*?http)(?!.*?www\.)(?!.*?#)(?!.* ?\.com)(?!.*?\.net)(?!.*?\.info)(?!.*?\.org).*?\))/g

目前,如果第二个链接没有出现在第一个链接之后,这将忽略第一个链接并匹配第二个链接。否则,它将匹配从第一个到第二个的所有内容。

我使用的是 JavaScript,它不支持负向回顾。有什么建议吗?

最佳答案

有两个问题。

  1. \[.*?\] 将超越 ] 并匹配 [应忽略的链接](http://google.com/) lorem ipsum lorem ips sum loreerm [不应忽略的链接] 只是为了匹配断言。
  2. 断言是无限的。

您可以使用此正则表达式修复 1 和 2

((!?\[[^\]]*?\])\((?:(?!http|www\.|\#|\.com|\.net|\.info |\.org).)*?\))

Expanded

 (                             # (1 start)
( !?\[ [^\]]*? \] ) # (2), Link
\( # Open paren (
(?: # Cluster
(?! # Not any of these
http
| www\.
| \#
| \.com
| \.net
| \.info
| \.org
)
. # Ok, grab this character
)*? # End cluster, do 0 to many times
\) # Close paren )
) # (1 end)

指标

----------------------------------
* Format Metrics
----------------------------------
Cluster Groups = 1

Capture Groups = 2

Assertions = 1
( ? ! = 1

Free Comments = 7
Character Classes = 1

关于javascript - 正则表达式以匹配本地 Markdown 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44511043/

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