首页 > 其他 > 详细

正则取出字符串中不连续的符合条件的字符

时间:2018-04-04 16:33:49      阅读:188      评论:0      收藏:0      [点我收藏+]

 

我们知道在正则中如果要取出一串字符串中连续的字符可以使用?、+、*、{}等元字符

比如:"432efwklej5431"中我需要取出"efwklej"只需要[A-Za-z]+就可以实现效果。

 

public class r {

    public static void main(String[] args) {
        String s = "432efwklej5431";
        String rex = "[A-Za-z]+";
    
        Pattern p = Pattern.compile(rex);
        Matcher m = p.matcher(s);
        
        if(m.find()) {
            System.out.print(m.group().toString());
        }

    }

}

 

 

 

 

但是假如efwklej是不连续的字符又该怎么取出呢?我们都知道?、+、*、{}这几个元字符都是对连续的字符起效果的,如果把"432efwklej5431"换成"432ef2w4kl4ej5431",上面的写法是不能取出这串字符串中的所有字母的,几个字母间被数字隔开了。

 

换个思路,既然不能连续的取出字母,那就一个一个的把字符取出来判断,如果是字母就进行输出,直到取到字符串中的最后一个字符

 

public class r {

    public static void main(String[] args) {
        String s = "432ef2w4kl4ej5431";
        String rex = "[A-Za-z]+";
//        定义一个变量用于储存当前读取个数
        int count = 0;
    
        Pattern p = Pattern.compile(rex);
        Matcher m = p.matcher(s);
        
//        当当前读取的个数小于字符串长度时继续读取
        while(count<s.length()) {
        if(m.find()) {
            System.out.print(m.group().toString());
            count++;
        }
        }

    }

}

 

技术分享图片

可以看到最终的输出结果是正确的

 

正则取出字符串中不连续的符合条件的字符

原文:https://www.cnblogs.com/lyd447113735/p/8717972.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!