tags: [yml]
categories: [语法整理]
前言
今天配置YML中,我的MySQL数据库密码是包含感叹号,发现YML根本就不支持,研究了一会才发现如何配置,正好借着这个机会,整理一下YML文件的语法规则,便于以后翻阅
规则
字符串
YAML字符串可以用单引或双引号来打包。某些情况下,它们也可以不加引号
string in YAML'A singled-quoted string in YAML'"A double-quoted string in YAML"
引号十分有用,当字符串起始或结束于“一或多个空格”的话,因为在进行解析式,未加引号的字符串将被两头清空格(trimmed)。当字符串包括特殊的或保留的字符时,使用引号是必须的
当使用单引号字符串时,内容中的任何单个 ' 必须使用两次以进行转义
'A single quote '' inside a single-quoted string'
字符串中包含以下内容时必须使用引号。虽然你可以使用双引,对于这些字符使用单引更为方便,可以避免被迫使用任何 \ 来进行转义:
:,{,},[,],,,&,*,#,?,|,-,<,>,=,!,%,@, ```
双引号提供了一种用于表达任意字符串的方式,使用 \ 来转义字符或排序。例如,当你需要内嵌 \n 或Unicode字符到一个字符串中时,它非常有用:
"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
最后,还有其他一些场合需要引号,不管你使用双引还是单引:
- 当字符串是
true或false(否则,它将被当作布尔值对待); - 当字符串是
null或~(否则,它会被认为是null值); - 当字符串看起来像数字,比如整型 (如
2,14, 等等), floats (e.g.2.6,14.9) 以及指数数字 (如12e7, 等等) (否则,它将被当作数字值对待); - 当字符串看起来像日期 (如
2014-12-31) (否则,它将被自动转换成Unix timestamp)。
数字
# an integer / 整形12# an octal / 八进制014# an hexadecimal / 十六进制0xC# a float / 浮点13.4# an exponential number / 指数数字1.2e+34# infinity / 无限大.inf
Nulls
布尔值
YAML中的布尔值可以被表达为 true and false。
日期
YAML使用ISO-8601标准来表达日期:
2001-12-14T21:59:43.10-05:00# simple date / 简单日期2002-12-14
集合
# 顺序型- JAVA- Perl- Python# 或者[PHP, Perl, Python]# 映射型PHP: 5.2MySQL: 5.1Apache: 2.2.20# 或者{ PHP: 5.2, MySQL: 5.1, Apache: 2.2.20 }# 合在一起'symfony 1.0': { PHP: 5.0, Propel: 1.2 }'symfony 1.2': { PHP: 5.2, Propel: 1.3 }
