tags: [yml]
categories: [语法整理]


前言

今天配置YML中,我的MySQL数据库密码是包含感叹号,发现YML根本就不支持,研究了一会才发现如何配置,正好借着这个机会,整理一下YML文件的语法规则,便于以后翻阅

规则

字符串

YAML字符串可以用单引或双引号来打包。某些情况下,它们也可以不加引号

  1. string in YAML
  2. 'A singled-quoted string in YAML'
  3. "A double-quoted string in YAML"

引号十分有用,当字符串起始或结束于“一或多个空格”的话,因为在进行解析式,未加引号的字符串将被两头清空格(trimmed)。当字符串包括特殊的或保留的字符时,使用引号是必须的

当使用单引号字符串时,内容中的任何单个 ' 必须使用两次以进行转义

  1. 'A single quote '' inside a single-quoted string'

字符串中包含以下内容时必须使用引号。虽然你可以使用双引,对于这些字符使用单引更为方便,可以避免被迫使用任何 \ 来进行转义:

  • :, {, }, [, ], ,, &, *, #, ?, |, -, <, >, =, !, %, @, ```

双引号提供了一种用于表达任意字符串的方式,使用 \ 来转义字符或排序。例如,当你需要内嵌 \n 或Unicode字符到一个字符串中时,它非常有用:

  1. "A double-quoted string in YAML\n"

如果字符串包含下列控制字符(control characters),必须使用双引进行转义:

  • \0, \x01, \x02, \x03, \x04, \x05, \x06, \a, \b, \t, \n, \v, \f, \r, \x0e, \x0f, \x10, \x11, \x12, \x13, \x14, \x15, \x16, \x17, \x18, \x19, \x1a, \e, \x1c, \x1d, \x1e, \x1f, \N, \_, \L, \P

最后,还有其他一些场合需要引号,不管你使用双引还是单引:

  • 当字符串是 truefalse (否则,它将被当作布尔值对待);
  • 当字符串是 null~ (否则,它会被认为是 null 值);
  • 当字符串看起来像数字,比如整型 (如 2, 14, 等等), floats (e.g. 2.6, 14.9) 以及指数数字 (如 12e7, 等等) (否则,它将被当作数字值对待);
  • 当字符串看起来像日期 (如 2014-12-31) (否则,它将被自动转换成Unix timestamp)。

数字

  1. # an integer / 整形
  2. 12
  3. # an octal / 八进制
  4. 014
  5. # an hexadecimal / 十六进制
  6. 0xC
  7. # a float / 浮点
  8. 13.4
  9. # an exponential number / 指数数字
  10. 1.2e+34
  11. # infinity / 无限大
  12. .inf

Nulls

YAML中的null可以被表达为 null or ~

布尔值

YAML中的布尔值可以被表达为 true and false

日期

YAML使用ISO-8601标准来表达日期:

  1. 2001-12-14T21:59:43.10-05:00
  2. # simple date / 简单日期
  3. 2002-12-14

集合

  1. # 顺序型
  2. - JAVA
  3. - Perl
  4. - Python
  5. # 或者
  6. [PHP, Perl, Python]
  7. # 映射型
  8. PHP: 5.2
  9. MySQL: 5.1
  10. Apache: 2.2.20
  11. # 或者
  12. { PHP: 5.2, MySQL: 5.1, Apache: 2.2.20 }
  13. # 合在一起
  14. 'symfony 1.0': { PHP: 5.0, Propel: 1.2 }
  15. 'symfony 1.2': { PHP: 5.2, Propel: 1.3 }

相关