2018-02-07 技术笔记
2018-02-07 本文已影响0人
zhaohw810
正则表达式(Regular Expression)
- 字符 \
- 在非特殊字符前的 \ 表示的是下一个字符是特殊的。例如: \b 表示匹配一个字符的边界,而不是匹配字符b。
- 可以将其特殊字符转义为字面量。例如:模式/a/ 表示匹配0个或多个a;模式/a*/ 匹配a这样的字符。
- 不要忘记对 \ 字符串的转义,\ 本身也是一个转义字符串。
- 字符 ^
匹配输入的开始,如果多行标志被设置为true,那么也匹配换行符后紧跟的位置。例如,/^A/ 只匹配"Abcddd" 不匹配 "an A" 。 - 字符 $
匹配输入的结束,如果多行标志被设置为true,那么也匹配换行符前的位置。
例如:/t$/ 会匹配 ‘eat’ 而不会匹配 'eater' - 字符 *
匹配一个表达式0次或多次,等价于{0,}
例如:/bo*/ 会匹配 A glot boooooot 中的boooooo 或者 bird 中得 b - 字符 +
匹配前面一个表达式1次或多次,等价于{1,}
例如:/a+/ 匹配 an 中得a 或者 aaaaaaaaaa 中的 aaaaaaaaaa。 - 字符 ?
匹配前面一个表达式0次或1次,等价于{0,1}
例如:/e?le?/ 匹配 "angel" 中的 'el',和 "angle" 中的 'le' 以及"oslo' 中的'l'。
如果紧跟在任何量词 *、 +、? 或 {} 的后面,将会使量词变为非贪婪的(匹配尽量少的字符),和缺省使用的贪婪模式(匹配尽可能多的字符)正好相反。
例如,对 "123abc" 应用 /\d+/ 将会返回 "123",如果使用 /\d+?/,那么就只会匹配到 "1"。
还可以运用于先行断言,如本表的 x(?=y) 和 x(?!y) 条目中所述。
- 字符 .
匹配除换行符里的任意单个字符
例如:/.n/ 匹配"nay, an apple is on the tree" 中的 'an' 和 'on',但是不会匹配 'nay'。