正则表达式
正则表达式是一种用来匹配字符串的工具,它可以用特定的语法来描述文本中的一些模式,以达到快速检索、替换和处理文本的目的。
它的用处也是很多,比如文本编辑器、搜索引擎、数据库、邮件过滤、语言解析器、爬虫器等等。
工作中,我经常用正则表达式来提取、校验数据,下面总结了一些日常经常用到的方法。
校验字符串
判断一个字符是否为数字。
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,"-");
替换各种特殊的符号文章来源:https://www.toymoban.com/news/detail-495003.html
txt=txt.replaceAll("[\\pP\\p{Punct}]",",").replaceAll(" ","").replaceAll("\r\n",",");
这篇文章会不断更新,活到老学到老,总会学到很多更加方便的方法替换的。文章来源地址https://www.toymoban.com/news/detail-495003.html
到了这里,关于经常使用的正则表达式以及用法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!