黑马程序员---Java基础--25天(正则表达式)

外卖配送系统完整代码 User u1 = new User("1001", "张三", "男", "123456", "湖北", "13545286487", localdatetime);User u4 = new User("1004", "刘柳", "女", "456789", "浙江", "18771580860", localdatetime);User u5 = new User("1005", "赵琦", "女", "567890", "新疆", "18771580750", localdatetime); 阅读详情

---------------------- android培训、java培训、期待与您交流! ----------------------

1.正则表达式(特点)
2.正则表达式(匹配)
3.正则表达式(切割)
4.正则表达式(替换)
/*
正则表达式:符合一定规则的表达式。
	作用:用于专门操作字符串。
	特点:用于一些特定的符号来表示一些代码操作。这样就简化书写。
	所以学习正则表达式,就是在学习一些特殊符号的使用。


	好处:可以简化对字符串的复杂操作。
	弊端:符号定义越多,正则越长,阅读性越差。




具体操作功能:


1,匹配:String  matches方法。用规则匹配整个字符串,只要有一处不符合规则,就匹配结束,返回false。
	
2,切割:String split();


3,替换:String replaceAll(regex,str);如果regex中有定义组,可以在第二参数中通过$符号获取正则表达式中的已有的组。
*/


class  RegexDemo
{
	public static void main(String[] args) 
	{
		//demo();
		//System.out.println((char)11);
//		checkTel();


		//splitDemo("zhangsan.lisi.wangwu","\\.");
		//splitDemo("c:\\abc\\a.txt","\\\\");


		//splitDemo("erkktyqqquizzzzzo","(.)\\1+");//按照叠词完成切割。为了可以让规则的结果被重用
												//可以将规则封装成一个组。用()完成。组的出现都有编号。
												//从1开始。 想要使用已有的组可以通过  \n(n就是组的编号)的形式来获取。


		String str = "wer1389980000ty1234564uiod234345675f";//将字符串中的数组替换成#。
		
		//replaceAllDemo(str,"\\d{5,}","#");


		String str1 = "erkktyqqquizzzzzo";//将叠词替换成$.  //将重叠的字符替换成单个字母。zzzz->z
		replaceAllDemo(str1,"(.)\\1+","$1");


		
	}


	public static void replaceAllDemo(String str,String reg,String newStr)
	{
		str = str.replaceAll(reg,newStr);


		System.out.println(str);
	}






	public static void splitDemo(String str,String reg)
	{
		
		//String reg = " +";//按照多个空格来进行切割
		String[] arr = str.split(reg);  
		System.out.println(arr.length);
		for(String s : arr)
		{
			System.out.println(s);
		}
	}








	/*
	匹配
	手机号段只有 13xxx 15xxx 18xxxx


	*/
	public static void checkTel()
	{
		String tel = "16900001111";
		String telReg = "1[358]\\d{9}";
		System.out.println(tel.matches(telReg));
	}


	public static void demo()
	{
		String str = "b23a23456789";


		String reg = "[a-zA-Z]\\d*";


		boolean b= str.matches(reg);
		System.out.println(b);
	}
	public static void checkQQ()
	{
		String qq = "123a454";


		String regex = "[1-9]\\d{4,14}";


		boolean flag = qq.matches(regex);
		if(flag)
			System.out.println(qq+"...is ok");
		else
			System.out.println(qq+"... 不合法");


	}




	/*
	对QQ号码进行校验
	要求:5~15  0不能开头,只能是数字
	
	这种方式,使用了String类中的方法,进行组合完成了需求。但是代码过于复杂。


	*/


	public static void checkQQ_1()
	{
		String qq = "1882345a0";


		int len = qq.length();


		if(len>=5 && len<=15)
		{
			if(!qq.startsWith("0"))//Integer.parseInt("12a");NumberFormatException
			{
				try
				{
					long l = Long.parseLong(qq);
					System.out.println("qq:"+l);
				}
				catch (NumberFormatException e)
				{
					System.out.println("出现非法字符.......");
				}
				
				/*
				char[] arr = qq.toCharArray();//123a4
				boolean flag = true;
				for(int x=0;x<arr.length; x++)
				{
					if(!(arr[x]>='0' && arr[x]<='9'))
					{
						flag = false;
						break;
					}
				}
				if(flag)
				{
					System.out.println("qq:"+qq);
				}
				else
				{
					System.out.println("出现非法字符");	
				}
				*/
			}
			else
			{
				System.out.println("不可以0开头");


			}
		}
		else
		{
			System.out.println("长度错误");
		}
	}
}


5.正则表达式(获取)
/*
正则表达式的第四个功能。
4,获取:将字符串中的符合规则的子串取出。


操作步骤:
1,将正则表达式封装成对象。
2,让正则对象和要操作的字符串相关联。
3,关联后,获取正则匹配引擎。
4,通过引擎对符合规则的子串进行操作,比如取出。












*/
import java.util.regex.*;


class RegexDemo2 
{
	public static void main(String[] args) 
	{
		getDemo();
	}
	public static void getDemo()
	{
		String str = "ming tian jiu yao fang jia le ,da jia。";
		System.out.println(str);
		String reg = "\\b[a-z]{4}\\b";


		//将规则封装成对象。
		Pattern p = Pattern.compile(reg);


		//让正则对象和要作用的字符串相关联。获取匹配器对象。
		Matcher m  = p.matcher(str);


		//System.out.println(m.matches());//其实String类中的matches方法。用的就是Pattern和Matcher对象来完成的。
										//只不过被String的方法封装后,用起来较为简单。但是功能却单一。


//		boolean b = m.find();//将规则作用到字符串上,并进行符合规则的子串查找。
//		System.out.println(b);
//		System.out.println(m.group());//用于获取匹配后结果。
		
		
		//System.out.println("matches:"+m.matches());
		while(m.find())
		{
			System.out.println(m.group());
			System.out.println(m.start()+"...."+m.end());
		}
	}
}


6.正则表达式(练习1)


7.正则表达式(练习2)
import java.util.*;
class RegexTest 
{
	public static void main(String[] args) 
	{
//		test_1();
//		ipSort();


		checkMail();
	}






	/*
	需求:对邮件地址进行校验。


	*/
	public static void checkMail()
	{
		String mail = "abc12@sina.com";


		mail = "1@1.1";


		String reg = "[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+";//较为精确的匹配。
		reg = "\\w+@\\w+(\\.\\w+)+";//相对不太精确的匹配。


		//mail.indexOf("@")!=-1




		System.out.println(mail.matches(reg));
	}


	/*
	需求:
	将下列字符串转成:我要学编程.
	
	到底用四种功能中的哪一个呢?或者哪几个呢?
	思路方式:
	1,如果只想知道该字符是否对是错,使用匹配。
	2,想要将已有的字符串变成另一个字符串,替换。
	3,想要按照自定的方式将字符串变成多个字符串。切割。获取规则以外的子串。
	4,想要拿到符合需求的字符串子串,获取。获取符合规则的子串。
	*/
	public static void test_1()
	{
		String str = "我我...我我...我要..要要...要要...学学学....学学...编编编...编程..程.程程...程...程";
		/*
		将已有字符串变成另一个字符串。使用 替换功能。
		1,可以先将 . 去掉。
		2,在将多个重复的内容变成单个内容。
		*/
		str = str.replaceAll("\\.+","");
		System.out.println(str);


		str = str.replaceAll("(.)\\1+","$1");
		
		System.out.println(str);


	}
	/*
	192.68.1.254 102.49.23.013 10.10.10.10 2.2.2.2 8.109.90.30
	将ip地址进行地址段顺序的排序。




	还按照字符串自然顺序,只要让它们每一段都是3位即可。
	1,按照每一段需要的最多的0进行补齐,那么每一段就会至少保证有3位。
	2,将每一段只保留3位。这样,所有的ip地址都是每一段3位。


	*/
	public static void ipSort()
	{
		String ip = "192.68.1.254 102.49.23.013 10.10.10.10 2.2.2.2 8.109.90.30";


		ip = ip.replaceAll("(\\d+)","00$1");
		System.out.println(ip);


		ip = ip.replaceAll("0*(\\d{3})","$1");
		System.out.println(ip);


		String[] arr = ip.split(" ");


		TreeSet<String> ts = new TreeSet<String>();


		for(String s : arr)
		{
			ts.add(s);
		}


		for(String s : ts)
		{
			System.out.println(s.replaceAll("0*(\\d+)","$1"));
		}
	}


	


}




8.正则表达式(网页爬虫)
/*
网页爬虫(蜘蛛)
*/
import java.io.*;
import java.util.regex.*;
import java.net.*;
import java.util.*;
class RegexTest2 
{
	public static void main(String[] args) throws Exception
	{
		getMails_1();
	}




	public static void getMails_1()throws Exception
	{
		URL url = new URL("http://192.168.1.254:8080/myweb/mail.html");


		URLConnection conn = url.openConnection();


		BufferedReader bufIn = new BufferedReader(new InputStreamReader(conn.getInputStream()));
		
		String line = null;


		String mailreg = "\\w+@\\w+(\\.\\w+)+";
		Pattern p = Pattern.compile(mailreg);


		


		while((line=bufIn.readLine())!=null)
		{
			Matcher m = p.matcher(line);
			while(m.find())
			{
				System.out.println(m.group());
			}
		}
	}


	/*
	获取指定文档中的邮件地址。
	使用获取功能。Pattern  Matcher
	*/
	public static void getMails()throws Exception
	{
		BufferedReader bufr = 
			new BufferedReader(new FileReader("mail.txt"));


		String line = null;


		String mailreg = "\\w+@\\w+(\\.\\w+)+";
		Pattern p = Pattern.compile(mailreg);






		while((line=bufr.readLine())!=null)
		{
			Matcher m = p.matcher(line);
			while(m.find())
			{
				System.out.println(m.group());
			}
		}
	}
}


----------------------  android培训、 java培训、期待与您交流! ----------------------详细请查看: http://edu.youkuaiyun.com/heima
Java基础入门知识总结 Java基础入门: 1.计算机的基础知识(day01) 2.Java语言基础(day02-day06) 3.Java面向对象(day07-day10) 4.Java开发工具(day11) 5.Java常见对象(day12-day14) 6.Java集合框架(day15-day19) 7.JavaIO流(day20-day22) 8.Java多线程(day23-day24) 9.JavaGUI(day25) 10.Java网络编程(day26) 11.Java反射(day27) 视频教程:黑马程序员全套Jav 阅读详情

相关推荐

STM32定时器ARR寄存器详解:从‘水桶接水’到精准测速,你的PWM和编码器都靠它

本文深入解析STM32定时器ARR寄存器的核心原理与应用技巧,从PWM波形生成到编码器测速实战。通过水桶模型和硬件本质的比喻,揭示ARR如何作为定时器的'心跳节拍器',并详细探讨其在动态调频、死区时间配置和高精度PWM中的关键作用。特别针对编码器模式下的ARR配置和溢出补偿算法进行优化建议,帮助工程师提升系统性能和实时性。

weixin_33734785的博客 379

黑马瑞吉外卖后台系统笔记完整版

本人自己整理的黑马瑞吉外卖后台笔记,把后台功能基本实现,视频中为做的功能,上述代码中也实现了

qq_57411297的博客 1042

Arduino与震动马达模块握手

震动马达模块采用采用高品质手机震动马达,适用于震动感互动产品的制作,可穿戴智能设备震动提醒,适合作为非可听指示器的小型振动马达。当输入为高电平时电动机会震动,就像你的静音模式的手机一样。

vor234的博客 5847

黑马程序员-1.5新特性

---------------------- http://edu.youkuaiyun.com/heima" target="blank">android培训、http://edu.youkuaiyun.com/heima" target="blank">java培训、期待与您交流! ---------------------- 自动解封装  在程序运行时自动能把基本类型封装成相对应的引用类型 能把引用类型接封成相对

nailsoul的专栏 1106

【DRAM存储器二十六】DDR4介绍-DDR4 SDRAM的主要技术特性之CA Parity、CRC Write date

详述DDR4的CA奇偶检验和写数据CRC校验功能

highman110的博客 1297

nvidia系列教程-AGX-Orin基础环境搭建

NVIDIA Jetson AGX Orin 是一款功能强大的嵌入式AI平台,专为需要高性能和低功耗的边缘计算应用设计。无论是自动驾驶、机器人,还是智能监控系统,Jetson AGX Orin 都能为这些应用提供强大的计算能力。本篇博客将为大家详细介绍如何在AGX Orin(32GB)上搭建基础开发环境,包括系统安装、CUDA和cuDNN的配置等,帮助你快速上手这个强大的平台。架构: 搭载 56 个 Tensor Core 的 1792 核 NVIDIA Ampere c GPUCUDA Cores。

flypig has a dream! 2797

手机号码,邮箱,QQ正则表达式

常用手机号码,邮箱,qq正则 $mobile = '/^((\d{3,4}){1}-)\d{7,8}$|(1[3|4|5|6|7|8|9]\d{9})$/';//手机+固话: $tel = '/^1[3|4|5|6|7|8|9]\d{9}$/'; //纯手机: $email = '/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|...

MrsJing的博客 2178

YOLO26改进策略【YOLO和Mamba】| CVPR 2025:EfficientViM 压缩隐藏状态空间进行通道混合、单头设计减少内存操作,提升目标检测效率与精度

本文记录的是利用模块优化的目标检测网络模型。EfficientViM Block(基于隐藏状态混合器的状态空间对偶性模块) 的设计旨在,提升特征提取效率,同时兼顾全局依赖捕捉与局部细节保留。本文将深入研究的原理,并将其应用到中,通过重构特征提取流程、减少内存绑定操作、融合多阶段特征,增强模型在资源受限环境下的检测性能与速度。EfficientViM: Efficient Vision Mamba with Hidden State Mixer based State Space DualityEfficie

Limiiiing的博客 399

黑马程序员——正则表达式

------- android培训、java培训、期待与您交流! ---------- 1、什么是正则表达式 正则表达式:符合一定规则的表达式。 作用:专门用于操作字符串,以简化对字符串的复杂操作。 特点:用于一些特定的符号来表示一些代码操作。这样就简化书写。 所以学习正则表达式,就是在学习一些特殊符号的使用。 好处:可以简化对字符串的复杂操作。 弊端:符号定义越多,正则越长,阅读性越差。 具体操作功能:匹配matches()、切割split()、替换replaceAll(regex,str)、获取。 书

youngheiying的博客 585

最新扣子智能体教程:手把手教你接入抖音评论区,实现自动回复

摘要:本文介绍如何利用扣子(Coze)平台搭建智能体实现抖音评论自动回复。从准备工作(账号注册、权限申请)到智能体创建(提示词优化、模型选择),再到抖音API接入和自动回复逻辑设置,详细说明了每个步骤的操作方法。文章还提供了回复模板示例和优化建议,帮助提升互动效率。通过这套方案,创作者可以显著减轻评论区管理压力,增强用户互动体验。(149字)

互联网架构师笔记 988

手把手教你学PCIE--固件与BIOS配置 - BIOS设置对PCIe性能的影响

本文详细分析了BIOS设置对PCIe性能的影响,并提供了优化建议。通过合理调整链路参数、功耗管理策略和高级功能配置,可以显著提升系统的性能和稳定性。本文将进一步分析BIOS设置如何影响PCIe设备的性能,并提供优化建议。BIOS(或UEFI)是系统启动时的第一个控制层,其设置直接决定了PCIe设备的工作状态和性能表现。BIOS中的功耗管理选项(如C-States、P-States)会影响PCIe链路的低功耗模式(L0s/L1)。MSI/MSI-X中断具有更高的性能和更好的可扩展性,应作为首选方案。

MHD0815的博客 997

黑马程序员-Java语言基础–正则表达式 第25天

---------------------- android培训、java培训、期待与您交流! ---------------------- 正则表达式 正则表达式:符合一定规则的表达式。       作用: 用于专门操作字符串       特点:用一些特定的符号来表示一些代码操作,这样就简化书写。所以学习正则表达式就是在学习一些特殊符号的使用。       好处:可以简化对

Qiangoo 2377

归结法证明真题分析

本文主要探讨了逻辑证明题的三种核心形式及其解题策略。第一类为A1∧A2∧A3→B的证明,常采用线性、单元、支持策略法等归结法,典型案例包括使用归纳法证明特定逻辑公式,并列举了历年真题。第二类为集合交集证明,典型案例为证明任意集合S和T的交集S∩T是S的子集,需将交集和包含关系用逻辑式表达。第三类为常规归结法证明,真题示例为使用归结法证明特定逻辑蕴含关系。掌握前两类证明方法后,第三类问题自然迎刃而解。

super_mochi1 278

黑马程序员总结文档汇总

这篇日志,是这些日子以来观看传智播客视频写的一篇汇总文档,蓝色标识的超链接是doc类型的文档,绿色标识的超链接是思维导图类型的文档,同时两种类型的文档中每篇都提供了文档下载链接,详细内容如下:   黑马程序员 01 Java基础教学 - 01 - 认识Java                                黑马程序员 02 Java基础教学 - 02 - 走进Java

kongbeily的专栏 2143

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

JavaSE基础加强-学习黑马程序员Java基础视频教程(P93开始)

JavaSE基础加强

孟孟单单的博客 2797

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

黑马程序员—java基础之反射与正则表达式

黑马程序员—java基础之反射与正则表达式                                                          ------- android培训、java培训、期待与您交流! ----------   凡在小事上对真理持轻率态度的人,在大事上也是不可信任的。 —--爱因斯坦     正则表达式 什么是正则表达式

IT梦想之旅 1015

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

黑马程序员——java基础知识之正则表达式

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——- 一、正则表达式基础 (1)、什么是正则表达式? 是一种强大而灵活的文本处理工具,在java的Unix工具集之中。 (2)、正则表达式有什么作用? 用于一些特定的符号来表示一些代码操作,进而操作字符串。可以简化对字符串的操作。 (3)、主要的四种具体功能:匹配、切割、替换和获取 (4)、常见的正则

king19910319的专栏 660

黑马程序员——Java之 正则表达式

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 正则表达式 正则表达式:符合一定规则的表达式 作用:用于专门操作字符串。 特点:用于一些特定的符号来表示一些代码操作。这样就简化代码书写 所以,学习正则表达式就是学习一些特殊符号的操作和使用 好处:可以简化对字符串的操作 弊端:符号定义越多,正则越长,阅

zdh_61的专栏 753

黑马程序员_java基础day25

------- android培训、java培训、期待与您交流! ---------- 主要内容:一、正则表达式;二、具体操作功能:1,匹配;2,切割;3,替换;4,获取;三、获取;四、练习 一、正则表达式: 正则表达式:符合一定规则的表达式。 作用:用于专门操作字符串。 特点:用一些特点的符号来表示一些代码操作。这样就简化书写。  所以学习正则表达式,就是在学习一些特殊符号的使用

u010348414的专栏 1561

黑马程序员——java基础:正则表达式

------- android培训、java培训、期待与您交流! ----------

a304449912的专栏 3020

黑马程序员——java基础-正则表达式

------- android培训、java培训、期待与您交流! ---------- 第一节:正则表达式 一、正则表达式的简述: 1 正则表达式:符合一定规则的表达式。 2 作用:用于专门操作字符串。 3 特点:用于一些特定的符号来表示一些代码操作。这样就简化书写。 4 好处:可以简化对字符串的复杂操作。 5 弊端:符号定义越多,正则越长,阅读性越差。 二、常见的功能: 1 功能的概述: (1)、正则里面有 1匹配 2切割 3替换 4获取 四种方法进行对字符串操作。

bei__kou的专栏 500

黑马程序员_JAVA笔记25——正则表达式

------- android培训、java培训、期待与您交流! ---------- 一、正则表达式,可以理解为符合一定规则的表达式     1、作用,用于专门操作字符串。     2、好处,可以简化对字符串的复杂操作     3、特点,用一些特定符号表示代码操作,这样就简化书写,所以学习正则表达式就是学习一些特殊符号的使用     4、具体操作功能:        

u011453546的专栏 684

黑马程序员java基础之之正则表达式

通过正则表达式,简化代码,了解正则表达式的匹配选择功能,初步涉猎网页爬虫

yueye12的专栏 485

[黑马程序员](第25天)高新技术之正则表达式

------- android培训、java培训、期待与您交流! ---------- 正则表达式 概述: 正则表达式:符合一定规则的表达式 作用: 用于专门操作字符串,描述共享该模式的一组字符串。 在java中有String类专门操作字符串为什么还要正则表达式呢? 因为这些功能太简单,组合起来功能代码太多 特点: 用于一些特定符号来表示一些代码操

qq_20935217的博客 296

黑马程序员—【Java基础篇】之正则表达式

------- android培训、java培训、期待与您交流! ---------     这篇是学习和分享第25天——正则表达式。     伙伴们,这标志着我们学习毕老师的课程已接近尾声,学习的过程有喜悦、苦思,有痛苦,更有弄懂一个知识点后的兴奋,老人们或者新人们都在说,学海无涯。是的,人生就是一个学无止境的过程,谢谢这么多天有毕老师的陪伴,虽然没有见过您的真人,但是却是那么的熟悉

WL8721的专栏 683

黑马程序员——java基础---正则表达式

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 正则表达式 一、概述 定义:符合一定规则的表达式。 作用:用于专门操作字符串。 特点:用于一些特定的符号来表示一些代码操作。这样就简化书写。 所以学习正则表达式,就是在学习一些特殊符号的使用。 好处:可以简化对字符串的复杂操作。 弊端:符号定义越多,正则越长,阅读性越差。

chao100ge的博客 574
上一篇: 黑马程序员---Java基础--24天(网络编程之二)
下一篇: 黑马程序员--java高新技术--eclipse开发工具
MsLinux386
博客等级 码龄15年 7粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值