Pattern p = Pattern.compile("(\\D+线)\\d+开关");
String s = "华士线123开关";
Matcher m = p.matcher(s);
p(m.group(1));
我的目的是取出华士线三个字。

解决方案 »

  1.   

    只取华士线三个字这样写就可以了Pattern p = Pattern.compile("华士线"); 
    String s = "华士线123开关"; 
    Matcher m = p.matcher(s);
    if(m.find()) {
        System.out.println(matcher.group(0));

      

  2.   

    字符串中华士和123这两个字是会变的,所以要用可变的。ICE兄弟的不行。不过还是谢谢你。
      

  3.   

    确定只取三个字,且最后一个字是“线”?
    "[\\u4E00-\\u9FA5]{2}[线]]"
      

  4.   

    Pattern p = Pattern.compile("(\\D+线)\\d+开关"); 
    String s = "华士线123开关"; 
    Matcher m = p.matcher(s);  m.find();
    System.out.println(m.group(1));
      

  5.   

      public static void main(String[] args) {
        Pattern p = Pattern.compile("(.+?线)\\d+开关");
        String s = "华士线123开关";
        Matcher m = p.matcher(s);    m.find();
        System.out.println(m.group(1));
      }既然你用的是线前面的,那么用.+? 就好了, \D 是非数字,不一定适合所有情况,比如
    天3-9线56开关
      

  6.   

     if(m.find())
       ...
      

  7.   


    你又没有设置组怎么能m.group(1)呢?正则表达式大多数用在验证规则上,验证数据是否匹配。
    你要实现只取出“华士线”三个字,用java.lang.String类的功能即可。
    String s = "华士线123开关";
    System.out.println(s.subSequence(0, 3));
    http://topic.csdn.net/u/20081130/15/2ee11370-774f-4e7f-9700-d22116b2e2dd.html