Mysql正则表达式很容易

时间:2014-09-24 12:25:10

标签: mysql regex

我希望根据模式获得所有行 xxx.xxx(仅限) 其中x是1到9之间的数字或任何字母

我的表达不起作用REGEXP '[a-z]{1,3}\.[a-z]{1,3}'

THX!

UPD:总而言之,但不起作用! 我试过了

SELECT email, registered, voted, ip, agent
FROM  `voters` 
WHERE member =199
AND DATE_FORMAT( voted,  '%Y-%m-%d' ) <  '2014-09-23'
AND SUBSTRING_INDEX( email,  '@', 1 ) 
REGEXP  '[a-zA-Z1-9]{3}\.[a-zA-Z1-9]{3}'

结果:

libsherbakul@...
savelkina_061080@...
dreik_339@...
simauta25@....
suslenkovagtp@...
driamoff@...
anashkina_1966@...
fedotovauliya@...
omsklib@...

UPD 2:Itryed更改模式,'[a-zA-Z1-9]{3}[\.]{1}[a-zA-Z1-9]{3}' 结果:

regina.zheyli@...
rus.antonin@...
kira.albenina@...
alya.oktya@...
andryushka.gromov.1986@...
inna.festival@...
ilyubaj.baktybaev@...
vika.korotkova.02@...
silina.lika@...
mika.sidorova@...
kharlov.dmitriy@...
toni.gordon.70@...
vasya.ganichev.74@...
fomin.slavick22@...

不好,因为“。”之前和之后超过3个符号。

3 个答案:

答案 0 :(得分:1)

如果你想要正好三个字母或数字后跟一个点,后面跟着正好三个字符,条件相同而不是之前和之后你必须使用

REGEXP '^[a-zA-Z1-9]{3}\.[a-zA-Z1-9]{3}$'

特殊字符^$具有以下含义:

character     meaning
----------------------------------------------
    ^         Match the beginning of a string.
    $         Match the end of a string.

答案 1 :(得分:0)

[a-z]仅匹配小写字母。您还需要指定大写,数字1-9。

应该修改量词。 {1-3}匹配前一个模式的1到3倍。使用{3}匹配3次。

REGEXP  '[a-zA-Z1-9]{3}\.[a-zA-Z1-9]{3}'

答案 2 :(得分:0)

应该是

[a-zA-Z1-9]{3}\.[a-zA-Z1-9]{3}

在期间的两边只允许3

和你说的任何一封信。