小弟对正则表达式不是很熟悉,比较着急,像
“A@@B@@C@@D##A1@@B1@@C1@@D1##......”这个形式的字符串的正则表达式应该怎么写?

解决方案 »

  1.   

    我想去验证所传的字符串是否属于这种格式,你说的split是获取串中的数据
      

  2.   

    ^([a-zA-Z0-9]+[@]{2}[a-zA-Z0-9]+[@]{2}[a-zA-Z0-9]+[@]{2}[a-zA-Z0-9]+[##]{2})+$
      

  3.   

    for example
    String s = "A@@B@@C@@D##A1@@B1@@C1@@D1##";
    System.out.println(s.matches("([A-Z\\d#]+(@{2})?)+"));"([A-Z\\d#]+(@{2})?)+"
    大写字母或数字或#,然后接着2个@(这2个@可有可无)所组成的字符串,这样组成字符可有多个
    [A-Z]表示大写字符
    \\d表示数字,也可以用[0-9]代替
    [#]就是#字符
    @就是字符
    {2}表示出现2次
    ?表示可有可无
    +表示出现1次或多次
    ()表示一个组
      

  4.   

    是否全是A@@B@@C@@D##类似于这样的一节一节拼成的,如果是的话可以用 public static void main(String[] args) {
    String s = "A@@B@@C@@D##A@@B@@C@@D##";
    System.out.println(s.matches("(\\w+@{2}\\w+@{2}\\w+@{2}\\w+#{2})+"));
    }
      

  5.   

    呵呵,就当是学习怎么写正则表达式了,我写的那个串中A、B、C等只是一个代号而已,实际上真正应用到可能是各种不同的数据库中的字段值,这样的话怎么会知道该如何写正则表达式呢!
      

  6.   

    哦,我的字符串中不是A,B,C,D而是可能任意的字符串,任意在正则表达式中应该怎么表示啊?
      

  7.   

    .点号表示任意字符
    就是任意字符,然后2个@,这样的字符串多个组合,对吧,那就更简单了
    String s = "A@@B@@C@@D##A1@@B1@@C1@@D1##";
    System.out.println(s.matches("(.+?(@{2})?)+"));
      

  8.   

    那天受到你的启发之后回去写了一个正则表达式,用在XSD验证XML时,我的数据是“001##XX制药厂#国营企业##024-65XXXX23##新区出口加工区XXX##胶囊@@002##XX化肥##民营企业##024-35XXXX23##新区##二氧化硫@@003##XX食品##民营企业##024-66XXXX23##新区水家##食品安全”,大概意思就是从数据库中读出的字段用“##”分隔,行之间用“@@”分隔,由于数据数目不确定,所以我的正则表达式是“(.+#{2}.+(@{2})?)+”并且用其他工具测试能通过,我不明白为什么xsd的校验通不过呢?
    能够继续指导一下?
      

  9.   

    高手,在吗?我看书了,可是还有问题,能指点一下吗?
    在XSD验证XML时,我的数据是“001##XX制药厂#国营企业##024-65XXXX23##新区出口加工区XXX##胶囊@@002##XX化肥##民营企业##024-35XXXX23##新区##二氧化硫@@003##XX食品##民营企业##024-66XXXX23##新区水家##食品安全”,大概意思就是从数据库中读出的字段用“##”分隔,行之间用“@@”分隔,由于数据数目不确定,所以我的正则表达式是“(.+#{2}.+(@{2})?)+”并且用其他工具测试能通过,我不明白为什么xsd的校验通不过呢?