visual-studio-code - 为什么 VS Code 的 yaml 扩展将 period 归类为浮点数?
问题描述
我正在开发自己的颜色主题。.yml
当我偶然发现 VS Code 的 YAML 扩展将period解释为float时,我尝试为文件进行自定义着色。
这是正确的行为吗?它不应该被解释为一个普通的不带引号的字符串吗?
定义语法的正则表达式的剥离版本。它将成功匹配期间。实际代码。
(?x:[-+]? (?: [0-9] [0-9_]*)? \. [0-9.]* (?: [eE] [-+] [0-9]+)?)
解决方案
这不是 YAML 1.2 的正确行为。根据规范,规范形式是
匹配正则表达式的, , , 或科学
0
记.inf
数-.inf
法。.nan
-? [1-9] ( \. [0-9]* [1-9] )? ( e [-+] [1-9] [0-9]* )?
再往下,给出了另一个正则表达式来识别核心模式中的浮点数,这更轻松:
[-+]? ( \. [0-9]+ | [0-9]+ ( \. [0-9]* )? ) ( [eE] [-+]? [0-9]+ )?
这仍然与单个时期不匹配。
但是,对于 YAML 1.1,这是正确的行为。在这里,类型注册表中给出的浮点数的正则表达式是
[-+]?([0-9][0-9_]*)?\.[0-9.]*([eE][-+][0-9]+)?
这很可能是正则表达式的来源,因为它与元数据相匹配。
YAML 1.2 的采用非常缓慢,一些实现在最近几年才获得支持,而一些(例如 SnakeYAML)仍然停留在 YAML 1.1。因此,使用 YAML 1.2 正则表达式并不是一个显而易见的决定。
推荐阅读
- node.js - 如何显示用户已连接到 GitHub
- laravel - Laravel 不断记录“无效请求(格式错误的 HTTP 请求)”
- vb.net - DataGridView 从另一个类调用时不显示任何内容,但使用表单按钮可以正常工作
- r - 错误:找不到函数“%||%”(管道百分比)
- c# - 如何在 C# 中将 PDF 文本坐标转换为图像文本坐标
- python - PHP7.4:OpenSSL AES-CFB 加密不同于 Python
- python - XPath 返回空字符串 Scrapy Python
- gitlab - GITLAB 中的私有项目访问令牌
- html - 使子元素适合屏幕大小而不会使用 css 或 Angular 溢出
- php - 如何检查数组是否有值?