正则表达式

package lcg;


import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


/*
 * 正则表达式对字符串的常见操作:
 * 1、匹配
 *     使用的是String类中的matches方法。
 * 2、切割
 * 其实就是使用的是String类中的split
 * 3、替换
 *    其实就是使用的是String类的replaceAll()方法;
 * 4、获取
 * 将正则规则进行对象的封装
 *  //Pattern p = Pattern.compile("a*b");
 *  //通过正则对象的matcher方法字符串相关联。获取要对字符串操作操作的匹配对象Matcher
 * Matcher m = p.matcher("aaaaab");
 * //通过Matcher匹配器对象的方法对字符串进行操作
 * boolean b = m.matches();
 * */




public class Test {
public static Scanner scanner=new Scanner(System.in);


public static void main(String[] args) {
fuctionDemo_4();

}
//演示获取
private static void fuctionDemo_4() {
String str="da jia hao ,ming tian bu fang jia!";
String regex="\\b[a-z]{3}\\b";//\b 单词边界 
//1、将正则封装成对象
Pattern p = Pattern.compile(regex);
//2、通过正则对象获取匹配器对象
Matcher m=p.matcher(str);
//使用Matcher对象的方法对字符串进行操作
//既然要获取三个字符组成的单词
//查找。find()
System.out.println(str);
while(m.find()){
System.out.println(m.group());//获取匹配的子序列
System.out.println(m.start()+"::"+m.end());
/*结果:da jia hao ,ming tian bu fang jia!
jia
3::6
hao
7::10
jia
30::33*/


}
}
//演示替换
private static void fuctionDemo_3() {
/*String s="xiaoqiangtttttwanghuanghhhhhhhhhwangxiao";
String eg="(.)\\1+";
//把叠词替换成#
String st=s.replaceAll(eg, "#");
System.out.println(st);
//结果:xiaoqiang#wanghuang#wangxiao
*/ String s="xiaoqiangtttttwanghuanghhhhhhhhhwangxiao";
String eg="(.)\\1+";
//把叠词替换成#
String st=s.replaceAll(eg, "$1");
System.out.println(st);
//结果:xiaoqiangtwanghuanghwangxiao
String phone="15863818654";
String eg1="(\\d{3})\\d{4}(\\d{4})";
String st1=phone.replaceAll(eg1, "$1****$2");
System.out.println(st1);
//结果:158****8654
}
//演示切割
public static void fuctionDemo_2(){
/*String s="**           **                                          **    **";
String eg=" +";//一次或多次 空格
String[] names=s.split(eg);
for(String name:names){
System.out.println(name);


String s="**.**.**.**";
//String eg=".";//.在正则表达式中有特殊含义代表:任何字符,所以要想真正用.得转义
String eg="\\.";
String[] names=s.split(eg);
for(String name:names){

System.out.println(name);

}*/
String s="xiaoqiangtttttwanghuanghhhhhhhhhwangxiao";
/*捕获组可以通过从左到右计算其开括号来编号。例如,在表达式 ((A)(B(C))) 中,存在四个这样的组: 


1     ((A)(B(C))) 
2     \A 
3     (B(C)) 
4     (C) 


组零始终代表整个表达式。 
*/


String eg="(.)\\1+";//()是组的含义,,
String[] names=s.split(eg);
for(String name:names){

System.out.println(name);

}

}
//演示匹配
public static void fuctionDemo_1(){
//检验手机号
boolean falge=true;
while(falge){
System.out.println("输入手机号:");
String phone=scanner.next();
//第一位是1,第二位是358中的一位,剩下的9位为0~9任意一位
//String eg="1[358][0-9]{9}";
//\d代表[0-9],但\代表转义,所以用\\代表转义后为\
String eg="1[358]\\d{9}";
boolean a=phone.matches(eg);
System.out.println(a);
System.out.println("输入1退出验证");
int i=scanner.nextInt();
if(i==1){
falge=false;
}
}
}


public static void greedy() {
/*X? X,一次或一次也没有 
X* X,零次或多次 
X+ X,一次或多次 
X{n} X,恰好 n 次 
X{n,} X,至少 n 次 
X{n,m} X,至少 n 次,但是不超过 m 次 


* */
String s="aoob";

String eg="ao?b";//开头a,结尾b,中间0次或者1次o;
boolean a=s.matches(eg);
System.out.println(s+"2:"+a);//false
s="aob";
a=s.matches(eg);
System.out.println(s+"1:"+a);//true
s="ab";
a=s.matches(eg);
System.out.println(s+"0:"+a);//true
s="aooob";
eg="ao+b";//开头a,结尾b,中间1次或者多次o;
a=s.matches(eg);
System.out.println(s+"o+:"+a);//true
    s="aoooob";
eg="ao{4}b";//开头a,结尾b,中间4次o;
a=s.matches(eg);
System.out.println(s+"o(4)+:"+a);//true
}


}
1、资源项目源码均已通过严格测试验证,保证能够正常运行;、 2项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行;、 2项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 、 1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READmE.文件(md如有),本项目仅用作交流学习参考,请切勿用于商业用途。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值