初识正则表达式
一,什么是正则表达式
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
二,正则表达式的用法
1.基本匹配模式
字母,数字直接匹配(字母区分大小写)
.(小数点)可匹配除了\r和\n之外的字符
^ 匹配输入字符串开始的位置
$ 匹配输入字符串结束的位置
2.用方括号查找某个范围内的字符
| [xyz] | 字符集 |
匹配包含的任意字符 |
| [^xyz] | 反向字符集 |
匹配未包含的任何字符 |
| [a-z] | 字符范围 |
匹配指定范围内的任何字符 |
| [^a-z] | 反向字符范围 |
匹配不在指定范围内的任何字符 |
| [x|y] | 查找任何x或y |
[abc|def]等同于[abcdef] |
3.元字符
常用
| \d | 数字字符匹配 | 等效于[0-9] |
| \D | 非数字字符匹配 | 等效于[^0-9] |
| \n | 换行符匹配 | 可以类比c语言中的格式控制 |
| \r | 回车符匹配 | |
| \v | 垂直制表符匹配 | |
| \t | 制表符匹配 | |
| \f | 换页符匹配 | |
| \s | 匹配任何空白字符 | 等效于[\n\r\v\t\f] |
| \S | 匹配任何非空白字符 | 等效于[^\n\r\v\t\f] |
| \b | 匹配一个边界字符 | |
| \B | 匹配一个非边界字符 | |
| \w | 匹配任何字类字符 | 等效于[A-Za-z0-9_] |
| \W | 匹配任何非字类字符 | 等效于[^A-Za-z0-9_] |
如果要匹配包括\r\n在内的任意字符可以用[\s\S][\w\W][\b\B]
不常用
| \cx | 匹配由x指明的控制字符。例如,\cM匹配一个Control-M或回车符。x的值必须为A-Z或a-z之一。否则,将c视为一个原义的“c”字符 |
| \xn | 匹配n,其中n为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,“\x41”匹配“A”。“\x041”则等价于“\x04&1”。正则表达式中可以使用ASCII编码。 |
| \num | 匹配num,其中num是一个正整数。对所获取的匹配的引用。例如,“(.)\1”匹配两个连续的相同字符。 |
| \nm | 标识一个八进制转义值或一个向后引用。如果\nm之前至少有nm个获得子表达式,则nm为向后引用。如果\nm之前至少有n个获取,则n为一个后跟文字m的向后引用。如果前面的条件都不满足,若n和m均为八进制数字(0-7),则\nm将匹配八进制转义值nm。 |
| \nml | 如果n为八进制数字(0-7),且m和l均为八进制数字(0-7),则匹配八进制转义值nml。 |
| \un | 匹配n,其中n是一个用四个十六进制数字表示的Unicode字符。例如,\u00A9匹配版权符号(©)。 |
4.限定符
| * | 零次或多次匹配前面的字符或子表达式 |
| + | 一次或多次匹配前面的字符或子表达式 |
| ? | 零次或一次匹配前面的字符或子表达式 |
| {n} | 正好匹配n次(n ≥ 0) |
| {n,m} | 匹配n次到m次(0 ≤ n ≤ m)(,与m之间不能有空格) |
| {n,} | 至少匹配n次(n ≥ 0) |
浙公网安备 33010602011771号