现有这样的字符串:'@#4905#6#10034#A#3#10040#A#4#10033#A#3#1#2#0#2#1000#'
解释如下:以‘@#’开头,‘#’结尾,中间都用‘#’分隔
4905:此处为4位数的数字
6:此处为一位数的数字10034:此处为5位数的数字
A:此处取值为A或B
3:此处为一位数的数字
注:(10034#A#3#)这一部分至少出现一次,最多5次1:此处为一位数的数字
2:此处取值为1或2
0:此处取值为0或1
2:此处取值为0或1或2
1000:此处为五位数的数字自己写了一个   去匹配不正确,请各位兄弟帮帮忙啊!
mysql> SELECT '@#4905#6#10034#A#3#10040#A#4#10033#A#3#1#2#0#2#1000#' REGEXP 
'^@#[0-9]{4}#[0-9]{1}#([0-9]{5}#[AB]#[0-9]{1}#){1,5}[0-9]{1}#[1|2]#[0|1]#[0|1|2]#[0-
9]{5}#$' AS test
    -> ;
+------+
| test |
+------+
|    0 |
+------+
1 row in set (0.00 sec)

解决方案 »

  1.   

    正确啊,你给的例子中最后一条并不符合!
    1000:此处为五位数的数字mysql> SELECT '@#4905#6#10034#A#3#10040#A#4#10033#A#3#1#2#0#2#10000#' REGEXP '^@
    #[0-9]{4}#[0-9]{1}#([0-9]{5}#[AB]#[0-9]{1}#){1,5}[0-9]{1}#[1|2]#[0|1]#[0|1|2]#[0
    -9]{5}#$' AS test;
    +------+
    | test |
    +------+
    |    1 |
    +------+
    1 row in set (0.00 sec)mysql>
      

  2.   

    正确啊,你给的例子中最后一条并不符合!
    1000:此处为五位数的数字  改成4或5位 就可以了mysql> SELECT '@#4905#6#10034#A#3#10040#A#4#10033#A#3#1#2#0#2#1000#' REGEXP '^@
    #[0-9]{4}#[0-9]{1}#([0-9]{5}#[AB]#[0-9]{1}#){1,5}[0-9]{1}#[1|2]#[0|1]#[0|1|2]#[0
    -9]{4,5}#$' AS test;
    +------+
    | test |
    +------+
    |    1 |
    +------+
    1 row in set (0.00 sec)
      

  3.   

    我还有一个问题  也是正则表达式的 请您帮忙看看 有这样的一个字符串:'1438#10031#0#4#10032#5#0#10034#1#0#'
    解释如下:以四位数字开头,‘#’结尾,用‘#’分隔
    1438:四位数10031:五位数
    0:取值范围-999到999
    4:取值范围-999到999
    注:10031#0#4# 这一部分最多出现5次,最少一次
    我写了这样的一个正则表达式  请你帮忙看看,哪里错了mysql> SELECT '1438#10031#0#4#10032#5#0#10034#1#0#' REGEXP'^[0-9]{4}#([0-9]{5}#(
    [0-9]{3}|-[0-9]{3})#([0-9]{3}|-[0-9]{3})#){1,5}$'
        -> ;
    +-------------------------------------------------------------------------------
    --------------------------------------+
    | '1438#10031#0#4#10032#5#0#10034#1#0#' REGEXP'^[0-9]{4}#([0-9]{5}#([0-9]{3}|-[0
    -9]{3})#([0-9]{3}|-[0-9]{3})#){1,5}$' |
    +-------------------------------------------------------------------------------
    --------------------------------------+
    |
                                        0 |
    +-------------------------------------------------------------------------------
    --------------------------------------+
    1 row in set (0.00 sec)