在学习C++的过程中,教程视频中有关于邮箱验证的正则表达式,我就想学习一下,发现很不简单,就查查找找搜了半天,取自我自认为是精华的部分记录下来。
[quote]
- 常用元字符
|代码|说明
|.|匹配除换行符以外的任意字符
|\w|匹配字母或数字或下划线或汉字
|\s|匹配任意的空白符
|\d|匹配数字
|\b|匹配单词的开始或结束
|^|匹配字符串的开始
|$|匹配字符串的结束
/*******************************************************************
//上面的常用的元字符要记得转义符号(\)
使用(\)来取消一些字符的特殊含义
【0-9】和 \d 的含义一样
【a-z A-Z 0-9】和 \w 含义一样
2.常用的限定符
|代码/语法|说明
|*|重复零次或更多次
|+|重复一次或更多次
|?|重复零次或一次
|{n}|重复n次
|{n,}|重复n次或更多次
|{n,m}|重复n到m次
/********************************************************************
例如:
abc\d+ : 就表示abc后面跟1个或多个数字(参考前面\d的含义 和 + 的含义)
接下来就有点难度了,大家都知道一般任何事情都有规则。这个正则表达式同样也可以设置规则,不过它叫分枝条件。和程序的流程图中的分支流有那么类似。
例如:(仔细看,应该很好理解的)
当你碰到一个结果可以由几个不同的方式得到。而你又想使用正则那么就必须使用分枝了。
0\d{2}-\d{8}|0\d{3}-\d{7}:这个表示匹配两种以连字符分隔的电话号码:
一种是0\d{2}-\d{8}例如(010-12345678)
一种是0\d{3}-\d{7}例如(0799-1234567)
通过上面的例子就知道分枝是使用(|)。
注意:在使用分枝的时候,记住分枝是有顺序的,从左到右,如果满足靠左边的某个分枝,那么它就不再去管其他的条件了。
例如:\d{5}-\d{4}|\d{5}:表示匹配5位数字加一个连接字符加4位数字或者直接是5位数字
如果你将\d{5}-\d{4}和\d{5}那么就导致一个分支不执行。
其实你可以将(|)看出是或运算。
3.常用的反义代码
|代码/语法|说明
|\W|匹配任意不是字母,数字,下划线,汉字的字符
|\S|匹配任意不是空白符的字符
|\D|匹配任意非数字的字符
|\B|匹配不是单词开头或者结束的位置
|[^x]|匹配除了x以外的任意字符
|[^aeiou]|匹配除了ariou这个字母以外的任意字符
4.懒惰限定符
|代码/语法|说明
|*?|重复任意次,但尽可能少重复
|+?|重复1次或更多次,但尽可能少重复
|??|重复0次或1次,但尽可能少重复
|{n,m}?|重复n到m次,但尽可能少重复
|{n,}?|重复n次以上,但尽可能少重复