MySQL正则表达式问题
这些是我在mysql5.1参考手册上看到的,一些不理解的东西....
mysql> SELECT 'fo\nfo ' REGEXP '^fo$ '; -> 0
mysql> SELECT 'fofo ' REGEXP '^fo '; -> 1
1: ^符号代表什么意思....//^表示否定 是不是表示看fofo是不是不是以fo开头的字符串 那照着这个意思那上面第二条 不是应该为0 为什么是1呢...
2: 后面紧跟的$代表什么意思....
mysql> SELECT 'abcde ' REGEXP 'a[bcd]{2}e '; -> 0
mysql> SELECT 'abcde ' REGEXP 'a[bcd]{3}e '; -> 1
1: [abc]和[abc]*的区别 //[abc]* 我知道是代表0个或者多个abc
组成的字符串..
2: 我对上面的例子稍微做了改动SELECT 'abcde ' REGEXP 'a[bcd]{2,}e '
--> 1 // 我有点晕了a{2}和a{2,}的区别....
帮助文档上面也说了a{n}与a的n个实例准确匹配。a{n,}匹配a的n个或更多实例。a{m,n}匹配a的m~n个实例,包含m和n。
照着上面说a{n}与a的n个实例准确比配. 问题又来了 那上面的mysql> SELECT 'abcde ' REGEXP 'a[bcd]{2}e '; -> 0
mysql> SELECT 'abcde ' REGEXP 'a[bcd]{3}e '; -> 1
为什么又会出现不同的结果呢...//
还有个问题...当我做如下改动的时候..SELECT 'abcde ' REGEXP '[bcd]{2}e '; ---> 1 如果是以A{2}为例 'a[bcde]{2} '和 '[bcde]{2} '这两个中是
a[bcde]代表A还是[bcde]代表A呢.....
我是刚刚接触正则表达式 //代表我的一些理解....有什么不对的地方请指正一下....
------解决方案--------------------^是开头,$是结尾。
^fo$是要匹配整个字符串就是fo,所以第一个为0;
^fo匹配以fo开头的字符串,所以第二个为1;
[bcd]{2}可以匹配任意两个字符,只要是b,c,d的组合,所以没有办法匹配上bcd
[bcd]{3}可以匹配任意三个字符,只要是b,c,d的组合,所以匹配上bcd
[bcd]{2,}可以匹配任意两个或更多字符,只要是b,c,d的组合,所以匹配上bcd
{m,n}只约束前一个模式。