故事开始的篇章^ ^
匹配不同类型的字符 :
| 字符类 | 匹配的字符 | 示例 |
| \d | 从0~9的任一数字 | \d\d可以匹配72,但不匹配aa或7a |
| \D | 非数字字符 | \D\D\D匹配abc,但不匹配123 |
| \w | 任意单词字符,如A-Z、a-z、0-9, 和下划线 | \w\w\w\w匹配Ab_2,但不匹配@#$%或Ab_@ |
| \W | 非单词字符 | \W可以匹配@,但不匹配a |
| \s | 任一空白字符,包括制表符,换行符,回车符,换页符和垂直制表符 | 匹配所有传统的空字符,包括用HTML,XML和其他标准定义的字符 |
| \S | 任一非空白字符 | 每一个非空字符:A%&g3等 |
| . | 任一字符 | 换行符除外\n |
| [...] | 括号中的任一字符 | [abc]匹配单个字符a、b或c,但不能匹配其他字符[a-z]匹配a~z的任一字符 |
| [^..] | 不在括号中的任意字符 | [^abc]匹配a/b/c除外的任一字符 |
指定匹配位置:
定位符 | 描述 |
| ^ | 其后的模式必须在字符串的开始处,如果是一个多行字符串,应位于任一行的开始。对于多行文本(包含回车符的字符串),需要设定Multiline标志 |
| $ | 前面的模式必须在字符串的末尾处,如果是一个多行字符串,应该在任一行的末尾 |
| \A | 前面的模式必须在字符串的开始处,多行标记被忽略 |
| \z | 前面的模式必须在字符串的末尾处,多行标记被忽略 |
| \Z | 前面的模式必须在字符串的末尾处,或是位于换行符前 |
| \b | 匹配一个单词的边界,实质上是单词字符和非单词字符间的点。单词字符是[a-zA-Z0-9_]中的任一字符。位于单词的开始。 |
| \B | 匹配一个非单词边界的位置,不在一个单词的开始 |
指定重复字符:
| 重复字符 | 含义 | 举例 |
| (花括号)n | 匹配前面的字符n次 | x(花括号)2 匹配xx,但不匹配x或xxx |
| (花括号)n, | 匹配前面的字符n次或更多 | x(花括号)2, 匹配2个或更多的x,如xx,xxxx |
| (花括号)n,m | 匹配卡门的字符至少n次,至多m次 | x(花括号)2,4 匹配xx,xxx和xxxx,不匹配x或xxxxx |
| ? | 匹配前面的字符0次或1次,可以省略 | x?匹配x或空 |
| + | 匹配前面的字符1次或更多次 | x+匹配x或xxx... |
| * | 匹配前面的字符0次或多次 | x*可以是空,或x,xxx.... |
备注由于花括号不不能显示,只能用字描述,(花括号)n表示用一对花括号包含一个n
特殊字符的转义:
| 转意思序列 | 描述 |
| \ | \ |
| \. | . |
| \* | * |
| \+ | + |
| \? | ? |
| \| | | |
| \( | ( |
| \) | ) |
| \{ | { |
| \} | } |
| \^ | ^ |
| $ | $ |
| \n | 换行 |
| \r | 回车 |
| \t | tab制表位 |
| \v | 垂直制表位 |
| \f | 换页 |
| \nnn | 匹配一个3位八进制表示的字符 3表示大写C |
| \xnn | 匹配2位十六进制的字符 \x43表示大写C |
| \unnnn | 4位十六进制表示的Unicode字符 |
| \cV | 匹配一个控制字符,如\cV表示Ctrl+V |
^[\w\W]+$ 这个是正则表达式的贪婪模式
^[\w\W]+?$ 这个是正则表达是的懒惰模式
^(\d[-]*)[\dxX]$ 用来匹配ISBN 1-861008-23-6 1-86100-823-6
^(\d[-]*?)[\dxX]$ 同上不过这个是懒惰模式