正则表达式(各个语言都有)
正则表达式是定义一种匹配规则的。规则是用来匹配字符的
匹配是从第一个字符挨个进行匹配
\b是代表单词的开头或者结尾,是单词的分界处,只匹配一个位置
. 是另一个元字符,用于匹配字符
* 是把*前面的字符重复N次 匹配的是重复次数 指*前边的内容可以连续重复使用人一次以使整个表达式得到匹配
Ha* :h后有n个a ha,haaa,haaa,haaaaa
\w 匹配字母或数字或下划线或汉子
\s 匹配任意的空白字符
\d 匹配数字
\b 匹配单词的开始与结束
^匹配字符串的开始 匹配的是一个位置
$ 匹配字符串的结束 匹配的是一个位置 例: ^\d{5,12}$ 表示匹配的是必须为5-12位的数字
###字符转义##
查找 . 或者*和\时 用\取消字符的特殊意义
###重复###
* 重复0次或更多次
+ 重复一次或更多次
? 重复0次或一次
{n}重复N次
{n,}重复n次或更多次
{n,m}重复n到m次
###字符类###
例 匹配元音字母[aeiou]就匹配任何一个英文元音字母
[0-9]代表的含义与\d完全一致:一位数字
\(?0\d{2}[)-]?\d{8} 首先是一个转义字符\(它能出现0次或1次(?),然后是一个0后面跟着两个数字(\d{2}),然后是)或-或空格中的一个,它出现1次或不出现(?)最后是8个数字(\d{8}))
###反义###
有时候需要查找不属于某个能简单定义的字符类的字符比如想查找除数字以外的情况
\W 匹配任意不是字母,数字,下划线,汉字的字符
\S匹配任意不是空白符的字符
\D匹配任意非数字的字符
\B 匹配不是单词开头或者结束的位置
[^X] 匹配除了x以外的任意字符
[^aeiou] 匹配除了aeiou这几个字母以外的任意字符
###后向引用###
用小括号指定一个子表达式后,匹配这个子表达式的文本(也就是此分组捕获的内容)可以在表达式或其他程序中作进一步的处理,默认情况下,每一个分组会自动拥有一个组号,规则是:从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推
捕获 (exp) 匹配exp,并捕获文本到自动命名的组里
(?<name>exp) 匹配
(?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号
零宽断言 (?=exp) 匹配exp前面的位置
(?<=exp) 匹配exp后面的位置
(?!exp) 匹配后面跟的不是exp的位置
(?<!exp) 匹配钱买你不是exp的位置