如何在REGEX mysql上转义“@”?

时间:2014-04-01 06:05:48

标签: mysql regex

我在tableMail中有这个注册表(my@mail.com)。 如果我使用

    REGEXP '[[:<:]]my[[:>:]]' 
找到了

my@mail.com。 如果我使用

    REGEXP '[[:<:]]my@[[:>:]]' or REGEXP '[[:<:]]my\@[[:>:]]'

找不到my@mail.com。

我认为这是因为&#34; @&#34;是一个特殊的角色。那怎么逃避呢?

1 个答案:

答案 0 :(得分:0)

“@”不是正则表达式语法中的特殊字符。匹配失败,因为“m”不是单词边界字符,并且您强制它将字边界与[[:>:]]匹配。

演示:

mysql> select 'my@mail.com' regexp '[[:<:]]my[[:>:]]';
+-----------------------------------------+
| 'my@mail.com' regexp '[[:<:]]my[[:>:]]' |
+-----------------------------------------+
|                                       1 |
+-----------------------------------------+

mysql> select 'my@mail.com' regexp '[[:<:]]my@[[:>:]]';
+------------------------------------------+
| 'my@mail.com' regexp '[[:<:]]my@[[:>:]]' |
+------------------------------------------+
|                                        0 |
+------------------------------------------+

mysql> select 'my@mail.com' regexp '[[:<:]]my@mail[[:>:]]';
+----------------------------------------------+
| 'my@mail.com' regexp '[[:<:]]my@mail[[:>:]]' |
+----------------------------------------------+
|                                            1 |
+----------------------------------------------+

mysql> select 'my@mail.com' regexp '[[:<:]]my@mail.[[:>:]]';
+-----------------------------------------------+
| 'my@mail.com' regexp '[[:<:]]my@mail.[[:>:]]' |
+-----------------------------------------------+
|                                             0 |
+-----------------------------------------------+

如果字符串中的下一个字符不是标点符号,请取下边界模式。