gpt4 book ai didi

node.js - 正则表达式将 Markdown 中的文本 URL 转换为链接

转载 作者:行者123 更新时间:2023-12-02 18:32:12 29 4
gpt4 key购买 nike

我正在尝试将 Markdown 文本中的文本链接(带有 FQDN,即没有相对链接)转换为 Markdown 链接。除非源 Markdown 已将文本转换为链接,否则它工作正常。例如,这是源文本:

Login in to My site [https://example.com/](https://example.com/) and select Something > Select below details further.
(https://example.com/abc/1.html)

Also have a look at https://example.com/abc/1.html

我的正则表达式:/(?<!\]\()(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim .

预期:仅匹配第二个和第三个链接。当前结果:匹配 3 个 URL。

我尝试在末尾添加否定前瞻,类似于开头的否定后瞻,但这只是省略了 URL 的最后一个字符,这真是太糟糕了!

我在 NodeJS 中使用它。

这里是 regex101 with the sample data 的链接

最佳答案

您可以选择不指定前瞻/后瞻,只需不匹配 "http" 之前的字符即可。是一个左括号:

[^\[\(](https?|ftp):\/\/[^\s]*

但是如果您严格想要排除 [x](y) 格式的所有 URL然后使用这个:

(?<!\]\()((?:https?|ftp):\/\/[^\s\]\)]*)(?:[\s\]\)](?!\()|$)

enter image description here

地点:

  • (?<!\]\() - 后向断言以确保这不是 y[x](y)
  • ( - 捕获URL部分
    • (?:https?|ftp):\/\/ - 匹配 URL 的 http/ftp 部分
    • [^\s\]\)]* - 匹配 URL 的剩余部分。
  • ) - URL 捕获结束
  • (?: - 非捕获组
    • [\s\]\)] - 匹配空格字符、右括号或右括号。我们需要匹配右括号/圆括号的原因是允许 URL 采用以下格式: (Check https://google.com)[Check https://google.com]
    • (?!\() - 前瞻断言以确保这不是 x[x](y)
    • | - 或者
    • $ - 字符串结尾
  • ) - 非捕获组结束

关于node.js - 正则表达式将 Markdown 中的文本 URL 转换为链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69278518/

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