MySQL数据库基本操作-正则表达式

一。 基本介绍
 
  正则表达式(regularexpression)描述了一种字符串匹配的规则,正则表达式本身就是一个字符串,使用这个字符串来描述、用来定义匹配规则,匹配一系列符合某个句法规则的字符串。在开发中,正则表达式通常被用来检索、替换那些符合某个规则的文本。
 
  MySQL通过REGEXP关键字支持正则表达式进行字符串匹配。
 
二。 ^的用法
 
^是在字符串的前面开始匹配,可以理解为匹配前缀
 
^ 在字符串开始处进行匹配
 
select  ‘abc’ regexp ‘^a’;
 
1
 
^ 其实就是匹配开头的子符 因为abc是以a开头,所以它的结果是1
 
当然如果我们想要匹配前缀字符串的话,则需要加上括号();
 
select ‘abc’ regexp ‘^(ab)’;
 
select ‘abc’ regexp ‘^(ac)’;
 
abc的前缀是ac,所以第一个返回为1,第二个范围为0。
 
注意:一个符号 ^ 只能对应一个字符进行 ^ 方式的匹配,如果要将一个字符串进行^方式匹配,则要将其看作一个整体,我们用括号()来将其表示为一个整体,包括后面的表达式也是如此。
 
三。 $的用法
 
$其实就是在字符的末尾出开始匹配,可以理解为匹配后缀
 
$ 在字符串末尾开始匹配
 
select ‘abc’ regexp ‘a$’;
 
select ‘abc’ regexp ‘c$’;
 
$的作用是匹配尾部的字符 因为abc是以c结尾,所以第一个结果为0,第二个为1
 
同样,如果我们的后缀是一个字符串,则需要用括号。
 
select ‘abc’ regexp ‘(bc)$’;
 
select ‘abc’ regexp ‘(ac)$’;
 
abc的后缀是bc,所以第一个结果为1,第二个为0。
 
四 . 的用法
 
.可以匹配除\n以外的任何字符串,可以理解为可以抵消掉任意字符,例如:我们用 ’。b’对
 
’abc’行匹配,。匹配了第一个字符a,而b刚好匹配,所以它的结果是真。
 
举例:
 
.匹配任意字符串
 
select ‘abc’ regexp ‘.b’;
 
select ‘abc’ regexp ‘.c’;
 
select ‘abc’ regexp ‘.a’;
 
五。 […]和[^…]的用法
 
[…]的作用是:
 
  匹配包含的任意一个字符,就是说只要能匹配到[]中的一个字符就行。
 
[…] 匹配括号中的任意单个字符
 
select ‘abc’ regexp ‘[xyz]’;
 
select ‘abc’ regexp ‘[xaz]’;
 
[^…]的作用是:
 
  匹配为被包含的任意字符,就是指,匹配含有[]中没有的字符。例如:[^abc]可以匹配abcd中的d。
 
同时我们要注意,^只有在[]中的时候才有取反的意思。
 
select ‘a’ regexp ‘[^abc]’;
 
select ‘x’ regexp ‘[^abc]’;
 
select ‘abc’ regexp ‘[^a]’;
 
六。 *和+的用法
 
’ * ‘的用法官方的描述我觉得有点歧义,最主要的歧义还是因为他对+的描述。
 
这里说 * 是匹配0次或多次,而+是匹配一次或多次,这样描述很容易让人认为,他是将1次和多次区分开来,而且我们在学数学的概率论时也会将1次和多次区分开来,所以就肯让人理解且 * 是匹配0和多次,如果匹配到了1次,则不行。
 
可实际上却不是如此,最后查看别人的博客,才发现,它的意思是0到n次,也就是0次以上。
 
用法
 
select ‘stab’regexp ‘[.ta*b]’;
 
select ‘stb’regexp ‘[.ta*b]’;
 
select ”regexp ‘[.ta*b]’;
 
select ”regexp ‘[a*]’;
 
+的用法:
 
select ‘stab’ regexp ‘.ta+b’;
 
select ‘stb’ regexp ‘.ta+b’;
 
七。 ?的用法
 
?的作用就是匹配0个或1个则为真,其他情况则为假。
 
举例:
 
select ‘stb’ regexp ‘.ta?b’;
 
select ‘stab’ regexp ‘.ta?b’;
 
select ‘staab’ regexp ‘.ta?b’;
 
八。 | 的用法
 
| 的作用就是匹配到了其中一个即可,例如a|b,这要目标字符串中有a,b其中一个即可。
 
select ‘a’ regexp ‘a|b’;
 
select ‘b’ regexp ‘a|b’;
 
select ‘b’ regexp ‘^(a|b)’;
 
select ‘a’ regexp ‘^(a|b)’;
 
select ‘c’ regexp ‘^(a|b)’;
 
九。 {}的用法
 
{}有两种形式:
 
{n}表示匹配某个字符出现了n次
 
{n,m}表示某个字符出现了n到m次
 
举例:
 
u{n} 匹配n个u
 
select ‘auuuuuuub’ regexp ‘u{7}’;
 
select ‘auuuuuuub’ regexp ‘au{7}b’;
 
u{n,m} 匹配n到m个u
 
select ‘auuuub’ regexp ‘au{3,5}b’;
 
select ‘auuuuub’ regexp ‘au{3,5}b’;
 
select ‘auuuuuub’ regexp ‘au{3,5}b’;

如需转载,请注明文章出处和来源网址:http://www.divcss5.com/html/h64892.shtml

张贴在3