《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
具有操作功能:
1.匹配:用String matches()方法匹配整个字符串,只要有1处不符合,就返回false
2.切割:String split()
**
3.替换:String replaceAll()
4.获取
**预定义字符类
. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]
Greedy 数量词
X? X,一次或一次也没有
X X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
为了可以让规则的结果被重用,可以将规则封装成组,用小括号完成,组的出现都有编号,**
从1开始,想要使用已有的组,可以通过\n(n就是组的编号)的形式来获取
public class RegexDemo01 {
public static void main(String[] args) {
//demo();
//checkEmail();
//checkQQ();
//checkTel();
//splitDemo();
replaceAllDemo();
}
//替换字符串
public static void replaceAllDemo(){
//要求,将字符串中的数字替换成#
/*String str = “nby3hjkjdhsajkdgahkfajkbmcuey6783264329grbhwkegy369123eqbdu”;
String reg = “\d{5,}”; //连续超过5个的,数字(\d)
String newStr = “#”;*/
//要求:将叠词替换成$号 将重叠的字母替换成单个字母aaaa->a
String str = “dasfaaaafdsgsgggggggggggggregtr”;
String reg = “(.)\1+”; //组,重复出现1次或多次
String newStr = "$1\ " ; / / 替换成 "; //替换成 ";//替换成,则需要转义字符来弄一下 $可以获取前面的正则表达式中组的信息,1表示第1组,而第1组刚好是叠词的第一个字母,
str = str.replaceAll(reg, newStr); //使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串
System.out.println(str);
}
//切割字符串
public static void splitDemo(){
//String str = “zhangsan lisi wangwu”;
//String reg = " +"; //空格出现一次或多次 按照多个空格进行切割
//String str = “zhangsan.lisi.wangwu”;
//String reg = “\.”; //这里需要用转义字符\来弄一下 因为单独的. 表示任意字符
//String str = “c:\abc\a.txt”; // 将按照\切割的字符串
//String reg = “\\”; //这里设置的规则是\
String str = “dasfaaaafdsgsgggggggggggggregtr”; // 将按照叠词(eg:aa,gg)切割的字符串
//第一个位置是任意字符,第二位拿的是第一位的结果 按照叠词完成切割,为了可以让规则的结果被重用,
//可以将规则封装成组,用小括号完成
String reg = “(.)\1+”; //组,前面一个组,重复一次或多次 即代表重叠, “(.)\1”:重复一组
String[] arr = str.split(reg);
System.out.println(arr.length); //数组长度
for(String a : arr){
System.out.println(a);
}
}
//校验手机号 手机号段只有13XXX 15XXX 18XXX
public static void checkTel(){
String tel = “15482027845”;
String regex = “1[358]\d{9}”; //第一位是1,第二位是3,5,8,后面的全是数字,共11位
Boolean flag = tel.matches(regex); // 利用正则表达式,看是否符合格式
if (flag) {
System.out.println("Tel: " + tel);
} else {
System.out.println(“格式错误”);
}
}
//校验QQ号,5-15位,全是数字,不能以0开始
public static void checkQQ(){
String qq = “123456789012345”;
String regex = “[1-9]\d{4,14}”; // 第1位是1-9的数字,第二位是0-9的数字,且第二位可以有4-14个
Boolean flag = qq.matches(regex); // 利用正则表达式,看是否符合格式
if (flag) {
System.out.println("qq: " + qq);
} else {
System.out.println(“格式错误”);
}
}
//[a-z&&[^bc]]:a-z的字母,除了b和c
public static void demo() {
String str = “13432532”;
//String reg = “[bcd]”; //这一位置,只能是bcd中的其中一个 这个字符串只能有1个字符
//3个位置,第一个位置是非a的任何字符,第二个是bcd中的其中一个,第三个位置是A-z的其中一个小写字母,大写字母
//String reg = “[^a][bcd][a-zA-Z]”;
String reg = “\d{4,}”; // \代表后面有特殊符号,\d表示0-9的数字
Boolean b = str.matches(reg);
System.out.println(b);
}
}
下面是获取的代码:
public class RegexDemo02 {
public static void main(String[] args) {
//getDemo();
getDemo2();
}
public static void getDemo(){
//获取连续3个字母组成的单词
String str = “ming tian jiu yao fang jia la, da jia .”;
String reg = “\b[a-z]{3}\b”;
//将规则封装成对象
Pattern p = Pattern.compile(reg); //无构造函数,通过静态方法返回已封装好的Pattern对象
//让正则对象和要作用的字符串相关联 获取匹配器引擎
Matcher m = p.matcher(str); //Matcher:通过解释 Pattern 对 character sequence 执行匹配操作的引擎。
//其实String类中的matcher()方法用的就是Pattern和Matcher来完成的,只不过用String方法封装过,用起来简单一些.
while(m.find()){ //通过引擎对符合规则的字串进行操作 find():尝试查找与该模式匹配的输入序列的下一个子序列
System.out.println(m.group()); //group()用于获取匹配后 的结果 ,返回由以前匹配操作所匹配的输入子序列。
//Matcher :start()返回以前匹配的初始索引
//Matcher :end()返回最后匹配字符之后的偏移量
System.out.println(m.start()+“…”+m.end()); //包含头,不包含尾
}
}
}
下面是对于正则表达式的练习:
/**
-
2016年7月31日19:05:16
-
需求:
-
将下列字符串转成:我要学编程
-
将ip地址进行地址段顺序的排序
-
对邮件地址进行校验
-
@author XFHY
-
到底用四种功能中的哪一个?或者哪几个呢?
-
思路方式:
-
1,如果只想知道该字符是否有错,使用匹配
-
2,想要将已有的字符串变成另一个字符串,替换
写在最后
还有一份JAVA核心知识点整理(PDF):JVM,JAVA集合,JAVA多线程并发,JAVA基础,Spring原理,微服务,Netty与RPC,网络,日志,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算…
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
还有一份JAVA核心知识点整理(PDF):JVM,JAVA集合,JAVA多线程并发,JAVA基础,Spring原理,微服务,Netty与RPC,网络,日志,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算…
[外链图片转存中…(img-C2ic25dI-1714434737722)]
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!