java之 25天 正则表达式(一)

2 篇文章 0 订阅
1 篇文章 0 订阅
正则表达式,匹配,切割,替换



/**
 * 正则表达式:符合一定规则的表达式
 *  作用:用户专门操作字符串.
 *  特点:用一些特定的符号来表示一些代码操作.这样就简化了代码书写.
 *  学习正则表达式,就是在学习一些特殊符号的使用
 *  好处:可以简化对字符串的复杂操作
 *  弊端: 符号定义越多,正则越长,阅读新越差.
 *  
 *  具体操作功能
 *  1.匹配的工作 String  matches()方法; 
 *    用规则匹配整个字符串,只要有一处不符合规则,就匹配结束,返回false
 *  
 *  2.切割: String split()
 *  
 *  3.替换: replace()  replaceAll()
 *  
 *  
 *
 */
public class RegexDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//checkqq();
		//demo();
		
		//System.out.println((char)11);  //男性的生物表示图标
		
		//splitDemo1("张三.李四...王武...招六.sunba.xiaqi","\\.+");
		//splitDemo1("c:\\abc\\a.txt","\\\\"); 
		
		String str="1356420773000|2012121245|2589712|20.00|0.60";
		splitDemo1(str,"\\|");
		
		System.out.println("叠词分割");
		//按照叠词切割  \n:表示 捕获组, (*) 表示作为不获组
		//为了让规则的结果被重用,可以将规则封装成一个组,用()完成,组的出现都有编号
		//从1开始,想要使用组可以通过\n(n就是组的编号)的形式来获取
		//判断组有多少个,就看多有多少个左括号, 编码呢,也是 从左变开始  1,然后 2,然后 ....
		//举例   ((())()) : 有4组 , (1(2(3))(4)):
		str="qiokknooloqqqnsdfhhdzzzzjf";
		splitDemo1(str,"(.)\\1+");   // kk qq  oo  hh zz 
		
		
		System.out.println("---------替换----------");
		str="wer23413132231st1551564sdfsd56f1565641416121sdf";
		replaceAllDemo(str,"\\d{5,}","#");  //连续 5个以上的数字 替换成 # 
		
		//替换叠词
		str="qiokknooloqqqnsdfhhdzzzzjf";
		replaceAllDemo(str,"(.)\\1+","&");  //将叠词 替换 与 符号
		//将叠词 替换成 "$"
		replaceAllDemo(str,"(.)\\1+","\\$");  //将叠词 替换 与 符号
		//将叠词 替换成  单个字符  zzzz--->z  qq-->q
		replaceAllDemo(str,"(.)\\1+","$1");  //使用  "$" 和编号,获取 前面匹配中的组
		
		
		
		
	}
	public static void replaceAllDemo(String ostr,String regex,String nstr){
		ostr=ostr.replaceAll(regex, nstr);
		System.out.println(ostr);
	}
	
	//简单的
	public static void splitDemo1(String str,String regex){
	/*	String str="张三.李四...王武...招六.sunba.xiaqi";
		str="c:\\abc\\"
		String reg="\\.+"; *///按照多个  点进行切割  "." 是正则中的特殊字符,需要转义  \.  ;但是 \ 也需要转移
 		String[] arr=str.split(regex);
		for (String s : arr) {
			System.out.println(s);
		}
	}
	
	//简单的
	public static void splitDemo(){
		String str="张三,李四,王武,招六,sunba,xiaqi";
		String reg=",";
		String[] arr=str.split(reg);
		for (String s : arr) {
			System.out.println(s);
		}
	}
	
	
	/**
	 * 校验手机号
	 * 手机号段只有 13xxx 15xxx 18xxx
	 */
	public static void checkMobile(){
		String tel="";
		String telReg="1[358]\\d9";
		System.out.println(tel.matches(telReg));
	}
	
	
	/**
	 * java 中正则表达式中 "\" 要成对出现
	 */
	public static void demo(){
		String str="b9";
		String reg="[a-zA-Z]\\d?";
		boolean b=str.matches(reg);
		System.out.println(b);
	}
	
	/**
	 * 使用正则表达式
	 */
	public static void checkqq(){
		String qq="1323123312";
		
		String regex="[1-9][0-9]{4,14}";
		boolean flag=qq.matches(regex);
		if(flag)
			System.out.println(qq+".... is  ok");
		else
			System.out.println(qq+".... no no no");
	}
	/**
	 * 对QQ号码进行校验
	 * 要求 :5~15 0 不能开头,只能是数字
	 * 
	 * 这种方式,使用String类中的方法,进行组合完成了需求,但是代码过于复杂
	 */
	public static void checkQQ(){
		String qq="1234234121612312";
		
		int len=qq.length();
		if(len>=5 && len<=15){
			if(!qq.startsWith("0")){
				/*char[] arr=qq.toCharArray();
				boolean flag=true;
				for (char c : arr) {
					
					if((c>='0' && c<='9')){
						flag=false;
						break;
					}
				}
				if(flag){
					System.out.println("QQ:"+qq);
				}else{
					System.out.println("QQ出现非法字符");
				}*/
				try{
					long l=Long.parseLong(qq);
					System.out.println("QQ:"+qq);
				}catch(NumberFormatException e){
					System.out.println("QQ出现非法字符");
				}
				
			}else{
				System.out.println("不可以是0开头");
			}
		}else{
			System.out.println("QQ长度错误");
		}
		
		
	}
	
	
}


正则 获取


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

/**
 * 正则表达式的第四个功能.
 * 4.获取: 将字符穿中 符合规则的 子串 取出 
 * 
 * 操作步骤:
 *  1. 将正则表达式 封装成对象 
 *  2. 让正则对象和要操作的字符串关联
 *  3. 关联 后获取正则匹配引擎
 *  4. 通过 引擎 对符合规则的子串 进行操作 比如 取出 
 * 
 *    
 *
 */
public class RegexDemo2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		getDemo();
	}
	
	public static void getDemo(){
		String str="123456";
		str="ming tian jiu yao fang jia la.";
		
		String regex="[1-9]\\d{4,14}";
		regex="\\b[a-z]{3}\\b";
		
		//1.将 规则 封装 成对象 
		Pattern p=Pattern.compile(regex);
		
		//2.让正则对象 和 字符串 关联
		Matcher m=p.matcher(str); //获取匹配其 引擎
		
		//其实  String类中的matches方法,用的就是Pattern和 Matcher 对象来完成
		//只不过,被String的方法封装后,用起来简单,但是 功能单一.
		//想要使用 更多复杂的对象的时候 ,就要找 Pattern 和 Matcher 对象
		//System.out.println(m.matches());  
		
		//还有很多 String 没有封装的方法 
	/*	boolean flag=m.find();//将规则作用到字符串上,并进行符合跪着的子串查找
		System.out.println(flag);
		System.out.println(m.group());  //用户获取匹配后的结果,但是得先找下
		*/
		System.out.println("matchers:"+m.matches());//作用于整个字符串,返回 false 发现会影响 后面 group的查找, 改变了 查找的索引
		while(m.find()){
			System.out.println(m.group());
			System.out.println(m.start()+"..."+m.end());//包含头 ,不包含 尾
		}
		
	}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值