故事开始的篇章^ ^ 匹配不同类型的字符 : | 字符类 | 匹配的字符 | 示例 | | \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]$ 同上不过这个是懒惰模式 |