经常使用的正则表达式以及用法

经常使用的正则表达式以及用法

  • 正则表达式
    • 校验字符串
    • 数据提取
    • 数据替换

正则表达式

正则表达式是一种用来匹配字符串的工具,它可以用特定的语法来描述文本中的一些模式,以达到快速检索、替换和处理文本的目的。
它的用处也是很多,比如文本编辑器、搜索引擎、数据库、邮件过滤、语言解析器、爬虫器等等。
工作中,我经常用正则表达式来提取、校验数据,下面总结了一些日常经常用到的方法。

校验字符串

判断一个字符是否为数字。

public static boolean checkStr(String str){
        String p1="([0-9])";
        Pattern pr = Pattern.compile(p1);
        Matcher mr = pr.matcher(str);
        return mr.matches();
    }

判断一个字符串是否全为数字。

public static boolean checkNum(String str) {
        String[] list = str.split("");
        String pattern = "([0-9])";
        boolean flag =true ;
        Pattern pr;
        Matcher mr;
        for (String s : list) {
            pr = Pattern.compile(pattern);
            mr = pr.matcher(s);
            if (!mr.matches()) {
                flag = false;
                break;
            }
        }

        return  flag;
    }

判断一个字符是否为字母。

public static boolean checkStr2(String str){
        String p1="([A-Za-z])";
        Pattern pr = Pattern.compile(p1);
        Matcher mr = pr.matcher(str);
        return mr.matches();
    }

判断一个字符串是否全为字母。

public static boolean checkEng(String str) {
        String[] list = str.split("");
        String pattern= "([A-Za-z])";
        boolean flag = true;
        Pattern pr;
        Matcher mr;
        for (String s : list) {
            pr = Pattern.compile(pattern);
            mr = pr.matcher(s);
            if (!mr.matches()) {
                flag = false;
                break;
            }
        }
        return flag ;
    }

判断一个字符是否为中文。

 public static boolean checkChinese(String str){
        String pattern = "[\\u4e00-\\u9fa5]";
        Pattern r = Pattern.compile(pattern);
        Matcher m = r.matcher(str);
        return m.matches();
    }

判断一个字符串是否全为中文。

public static boolean checkEng(String str) {
        String[] list = str.split("");
        String pattern= "[\\u4e00-\\u9fa5]";
        boolean flag = true;
        Pattern pr;
        Matcher mr;
        for (String s : list) {
            pr = Pattern.compile(pattern);
            mr = pr.matcher(s);
            if (!mr.matches()) {
                flag = false;
                break;
            }
        }
        return flag ;
    }

数据提取

取手机号码。

public String phone(String str){
    String pattern = "(13[0-9]|14[0-9]|15[0-9]|16[0-9]|17[0-9]|18[0-9]|19[0-9])\\d{8}";
    Pattern r = Pattern.compile(pattern);
    Matcher m = r.matcher(str);
    String result ="";
    if (m.find()) {
        result = m.group();
    }
    return result;
}

这个方法可以直接复用,要用来提取其他信息,只需修改pattern 即可!
提身份证号:

\d{17}[\d|x|X]|\d{15}

提取22位数字字母组合

([A-Za-z0-9]{22})+

18位数字字母组合

([A-Za-z0-9]{18})+

以上两个数字字母组合的,提取出来有可能是纯数字、纯字母或者数字字母组合,如果单纯只要数字字母组合的话,可以用上面的字符校验一下结果。(如果有其他方法,评论区告知一下,共同学习!)

14位纯数字

([0-9]{14})+

11或者13位数字字母组合

([A-Za-z0-9]{11,13})

数据替换

在一个字符串中,我们要替换多个关键词,可以用下面这种写法:

 String regex = "不是|没有|非|否|无|不会|不要|不可";//否定词
 input=input.replaceAll(regex,"-");

替换各种特殊的符号

txt=txt.replaceAll("[\\pP\\p{Punct}]",",").replaceAll(" ","").replaceAll("\r\n",",");

这篇文章会不断更新,活到老学到老,总会学到很多更加方便的方法替换的。

你可能感兴趣的:(技巧,正则表达式)