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.2
MySQL: 5.1
Apache: 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 }