正则表达式
2021-05-11 本文已影响0人
GuoDJ
正则,正则表达式
什么是正则表达式
正则表达式能够描述字符串的格式,通常用于验证字符串内容;
正则表达式并不是java语言的内容,而是独立于编程语言的体系;
为什么需要正则表达式
在人机信息互动时,可以让计算机验证用户输入的内容是否匹配比如Email,手机号,身份证号等
正则表达式字符说明一个字符
一个字符
转译字符
\n 换行
\r 回车
\t 制表符,一个缩进量
\ 代表一个反斜线字符
\' 代表一个单引号(撇号)字符
\" 代表一个双引号字符
\0 空字符(NULL)
预定义字符
数量词
matches方法
package chapter04;
public class Regex_matches {
public static void main(String[] args) {
System.out.println("判断字符串表示的字符,是否是abc其中任意一个");
String a = "%";
System.out.println(a);
String regex = "\\W";//正则 == 规则
boolean flag = a.matches(regex);
System.out.println(flag);
}
}
正则验证Email
字符串支持正则表达式方法—:
boolean matches(String regex)
使用给定的正则表达式验证当前字符串的格式,匹配通过则返回true否则返回false
package day02;
/**
* 字符串支持正则表达式的相关方法之一:
* boolean matches(String regex)
* 该方法是用给定的正则表达式验证当前字符串是否满足
* 格式要求,满足则返回true.
* 这里需要注意,正则表达式就算不添加边界匹配符(^...$)
* 也是做全匹配验证。
* @author adminitartor
*
*/
public class String_matches {
public static void main(String[] args) {
/*
* email的正则表达式
* [a-zA-Z0-9_]+@[a-zA-Z0-9]+(\.[a-zA-Z]+)+
*
*
*/
String email = "fancq@tedu.cn";
String regex = "[a-zA-Z0-9_]+@[a-zA-Z0-9]+\\.[a-zA-Z]+)+";
boolean tf = email.matches(regex);
if(tf){
System.out.println("是邮箱");
}else{
System.out.println("不是邮箱");
}
}
}
正则拆分字符串
string支持正则表达式方法二:
String[] split(String regex)
将当前字符串按照满足正则表达式的部分进行拆分,返回拆分后的每段内容
package day02;
/**
* 字符串支持正则表达式方法二:
* String[] split(String regex)
* 将当前字符串中满足给定正则表达式的部分拆分,将
* 剩下的所有部分以一个数组的形式返回。
* @author adminitartor
*
*/
public class String_split {
public static void main(String[] args) {
String str = "abc123def456ghi789jkl";
/*
* 根据数字拆分,保留所有字母部分
*/
String[] data = str.split("[0-9]+");
System.out.println("拆分出"+data.length+"项");
for(int i=0;i<data.length;i++){
System.out.println(data[i]);
}
}
}
正则替换字符串
String支持正则表达式方法三:
String replaceAll(String regex,String str)
将当前字符串中满足正则表达式的部分替换为给定的内容。
package day02;
/**
* 字符串支持正则表达式方法三:
* String replaceAll(String regex,String str)
* 将当前字符串中满足正则表达式的部分替换为给定内容
* @author adminitartor
*
*/
public class String_replaceAll {
public static void main(String[] args) {
String str = "abc123def456ghi789jkl";
/*
* 将当前字符串中的数字部分替换为"#NUMBER#"
*/
str = str.replaceAll("\\d+", "#NUMBER#");
System.out.println(str);
}
}
练习1:图片重命名
package day02;
/**
* 图片重命名
* @author adminitartor
*
*/
public class Test1 {
public static void main(String[] args) {
String imgName = "123.jpg";
// String[] names = imgName.split("\\.");
//
// long time = System.currentTimeMillis();
//
// imgName = time + "." + names[1];
// System.out.println(imgName);
String name = imgName.substring(imgName.indexOf("."));
imgName = System.currentTimeMillis()+name;
System.out.println(imgName);
}
}
练习2:替换敏感词汇
package day02;
public class Test2 {
public static void main(String[] args) {
String regex = "(wqnmlgb|nc|cnm|mdzz|djb|sb|nmlgb)";
String message = "wqnmlgb!你这个sb!你怎么这么的nc!nmlgb!你个djb!";
message = message.replaceAll(regex, "****");
System.out.println(message);
}
}