[TOC]
正则
正则表达式(regular expression)描述了一种字符串匹配的模式(pattern)
元字符
一些有特殊含义的字符,帮助建立匹配规则
\ 转义字符
^ 匹配开始位置 ps:当在一组方括号里使用^是,它表示"非"或"排除"的意思,常常用来剔除某个字符。
$ 匹配结束位置
ps:字符^和$同时使用时,表示精确匹配(字符串与模式一样),分开使用,只匹配字符串首或尾
+ 一次或多次
* 0次或多次
ps:
?0次或1次,也可以将默认的贪婪模式转变为非贪婪,例如,对于字符串 "oooo",'o+?' 将匹配单个 "o",而 'o+' 将匹配所有 'o'。
(?:pattern) 获取匹配结果,但是不需要存储为分组结果
(?=pattern) 例如,"Windows(?=95|98|NT|2000)"能匹配"Windows2000"中的"Windows",但不能匹配"Windows3.1"中的"Windows"。
(?!pattern) 例如"Windows(?!95|98|NT|2000)"能匹配"Windows3.1"中的"Windows",但不能匹配"Windows2000"中的"Windows"。
{n,m} 限定出现次数
*、+限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。
[^指定字符串] 指的是除指定字符串以外的其他字符串
[] 匹配其中之一,可匹配字符组的一个列表,
() 可作为子匹配进行分组缓存,分组获取的结果可以通过组编号(从1开始)拿出,
**\n访问分组的引用**,可以用来去重
x|y 匹配 x 或 y
\s 匹配任何空白字符,包括空格、制表符、换页符等
\S 匹配任何非空白字符
\n 匹配一个换行符
\r 匹配一个回车符
. 匹配除换行符 \n 之外的任何单字符
\b 匹配一个单词边界,是不是在单词的首尾;\B 相反
\d 匹配一个数字字符。等价于 [0-9]。
\D 匹配一个非数字字符。等价于 [^0-9]。
\w 匹配字母、数字、下划线。等价于'[A-Za-z0-9_]'。
[a-z] //匹配所有的小写字母
[A-Z] //匹配所有的大写字母
[a-zA-Z] //匹配所有的字母
[0-9] //匹配所有的数字
[0-9\.\-] //匹配所有的数字,句号和减号
[ \f\r\t\n] //匹配所有的白字符