具体的格式为:字符串-字符串-数字-数字#字符串-字符串-数字-数字#……其中……代表可能有一个或者多个!
没接触过正则!多谢!

解决方案 »

  1.   

    这样好像不行?
    (\\w+-\\w+-\\d{1,3}-\\d{1,3}#)+
      

  2.   

    (\\w+-\\w+-\\d+-\\d+#)+
    应该可以的吧。
      

  3.   

    我现在写的是这样子:
    ((\\w+||[\u4E00-\u9FA5]*)-\\w+-\\d{1,4}-\\d{1,4}#)+正常的字符串是:用户w1-abc2-1-8#
    可是,当我要匹配的字符串为:用-#户we1-ww-1-8#也能够匹配,为什么?
      

  4.   

    [^-]+[-][^\d-]+[-]\d+[-]\d+[#]用户1-ww-1-8#用户1中不能包含 "-" ,所以要匹配不包含 "-" 的所有字符,你的那个没有屏蔽 "-"
      

  5.   

    谢谢,不过不知道您试过了没有!我这边还是可以通过 用-#户we1-ww-1-8# 这样的字符串
      

  6.   

    System.out.print("用-#户we1-ww-1-8#".matches("[^-]+[-][^\\d-]+[-]\\d+[-]\\d+[#]"));
      

  7.   

    ([^-]+[-][a-z]+[-]+\\d{1,4}[-]\\d{1,4}[#])*
    这个不知道行不行啊!
      

  8.   

    下载 RegexBuddy 一步一步调试。
    www.lostcoders.net 有试用版下载。
      

  9.   

    (^([用户]\\w+[-]\\w+[-]\\d+[-]\\d+[#])+$)
    这样应该没问题
      

  10.   

    谢谢大家,我简化了一下,可是我用同一个字符串,以下两种方法匹配出来的结果有时候会不同,那位知道为什么?例如:
    方法一:
    Pattern pattern = Pattern.compile("([^-#]+[-][^-#]+[#])+");
    Matcher matcher = pattern.matcher("用-#户-userone#用户-usertwo#");
    System.out.println(matcher.find());方法二:
    System.out.println("用-#户-userone#用户-usertwo#".matches("([^-#]+[-][^-#]+[#])+"));
      

  11.   

    因为find()方法是只要目标字符串中有与模式匹配的部分即可,而matches()方法要求目标字符串完全与模式匹配,不允许有其它多余字符。