regex VS Code如何识别文本(字符串)中的URL?

8dtrkrch  于 2023-10-22  发布在  其他
关注(0)|答案(2)|浏览(123)

我发现VS Code确实很好的URL识别/提取-比互联网上找到的任何方法都要好。既然VS Code是开源的,我在哪里可以找到代码?可能是正则表达式规则。

我用关键字urlextract搜索源代码,但找不到任何线索。

yqhsw0fo

yqhsw0fo1#

内置链接检测

虽然不能100%确定这就是它,但从我对源代码的搜索来看,我认为您可能正在寻找src/vs/editor/common/languages/linkComputer.ts,它使用基于状态机的方法。
src/vs/editor/browser/services/editorWorkerService.ts中,在EditorWorkerService的构造函数中,有一个注解说“register default link-provider and default completions-provider“,以及对client.computeLinks的调用,这是在EditorSimpleWorker类的computeLinks函数中在src/vs/editor/common/services/editorSimpleWorker.ts中定义的,该函数又从linkComputer.ts调用computeLinks。该注解与DocumentLinkProvider<T>provideDocumentLinks函数的描述很好地结合在一起,该函数声明:
请注意,编辑器附带了一个默认的提供程序,可以检测http(s)file链接。
有趣的事实:你可以找到它在https://github.com/search?q=repo%3Amicrosoft%2Fvscode%20computeLinks&type=code中的使用位置,包括src/vs/workbench/contrib/output/common/outputLinkComputer.tssrc/vs/workbench/contrib/terminalContrib/links/browser/terminalUriLinkDetector.ts
请注意,VS Code中的集成终端具有各种其他链路功能。集成使用xtermjs,它支持OSC 8超链接(另请参阅How to create links in xterm.js)。VS Code还有几个内置的链接检测器模式,专门用于识别流行的命令行工具的命令输出中的文件链接。请参见src/vs/workbench/contrib/terminalContrib/links/browser/terminalLinkParsing.ts
输出面板还有一些特殊的链接检测模式,您可以在src/vs/workbench/contrib/output/common/outputLinkComputer.ts中找到。

扩展贡献链接“检测”

如上所述,有一个DocumentLinkProvider扩展API,该扩展可以用来提供指向文档的链接。如果你想知道一个特定的扩展是如何做到这一点的,你需要发布一个专门关于该扩展的问题。

rlcwz9us

rlcwz9us2#

vscode在引擎盖下使用了ripgrep。您可以在这里找到有关实现的更多信息https://github.com/BurntSushi/ripgrep

相关问题