正则

Wed 18 July 2018

[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]  //匹配所有的白字符