正则表达式
重温正则表达式,想起大三编译原理李老师的课了..还好当时底子还在
“.”句点符号匹配所有单个字符,包括空格、Tab字符甚至换行符;
[abc]方括号之内你只能匹配单个字符,只能匹配a或b或c 其中的唯一一个;
“|”操作符的基本意义就是“或”运算;
()圆括号还可以用来分组 ;
匹配次数:
.表单个任意字符;
*表0次或多次 ;
+表1次或多次;
?表0次或1次;
{n} 表重复n次;
{m,n} 表重复m到n此均可;
“\” 为转义字符;
“^”符号称为“否”符号。如果用在方括号内,“^”表示不想要匹配的字符;
注意:^在中括号内时表示否定,反之表示匹配以..为首。
\d表[0-9]
\D表[^0-9]
\w表[A-Z0-9]
\W表[^A-Z0-9]
\s表[\t\n\r\f]
\S表[^\t\n\r\f] \f是什么意思呢?!!
“\s”符号是空白符号,匹配所有的空白字符,包括Tab字符;
^表匹配行开始符;再次注意中括号内的区别;
$表匹配行结束符;
下边几个实例:
\d+$ 匹配全数字
\d{4}-(0[1-9]|1\d)-(0[1-9]|[1-2]\d) 匹配生日,格式2011-01-20
对于同一表达式会有多种不同的正则式来判断,区别可能在于判断的范围准确性。
如2011-01-02使用\d{4}-\d{2}-\d{2}同样也是可以判断出来的,只是此正则式范围太大了,比如2011-22-33也可判断通过,显然这是与实际相不符的。
因此针对不同情况来处理特殊正则式是更明智的,理解正则式,理解自动机。
忽然想起要感谢李老师 ~~