黑马程序员--Java中正则表达式的基础小结

黑马程序员入学Java知识——精华总结 黑马程序员入学Java知识——精华总结   J2SE部分,Java高新技术部分,7K面试题部分等黑马入学要求的知识点总结!   一、黑马程序员—java概述与基础知识 6 1、何为编程? 6 2、Java语言概述,历史、特点 6 3、什么是跨平台性?原理是什么?JVM 7 4、Jre和Jdk的区别? 7 5、java虚拟机JVM 8 6、 Java程序运行机制 8 7 阅读详情

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

一、什么是正则表达式

1,定义:正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它 用以描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。 

2,用途:

字符串匹配(字符匹配)

字符串查找

字符串替换

字符串分割 

3.java中处理正则表达式的类:

java.lang.String

java.util.regex.Pattern:模式类:字符串要被匹配的这么一个模式,该模式本身已经被编译过,使用的话效率要高很多。

java.util.regex.Matcher:匹配类:这个模式匹配某个字符串所产生的结果,这个结果可能会有很多个。


二、注意事项

1、Java对反斜线处理的问题

在其他语言中,\\表示要插入一个字符\;

在Java语言中,\\表示要插入正则表达式的反斜线,并且后面的字符有特殊意义。

预定义字符类

. 任何字符(与行结束符可能匹配也可能不匹配)

\d 数字:[0-9]

\D 非数字: [^0-9]

\s 空白字符:[ \t\n\x0B\f\r]

\S 非空白字符:[^\s]

\w 单词字符:[a-zA-Z_0-9]

\W 非单词字符:[^\w]

但是看看上面程序,对比下不难看出:

\d在实际使用的时候就写成了 \\d;

在Java正则表达式中,如果要插入一个\字符,则需要在正则表达式中写成\\\\,原因是下面的APIDoc定义\\表示一个反斜线。

但是如果在正则表示式中表示回车换行等,则不需要多添加反斜线了。比如回车\r就写作\r. 

2、 Matcher.find():尝试查找与模式匹配的字符序列的下一个子序列。此方法从字符序列的开头开始,如果该方法的前一次调用成功了并且从那时开始匹配器没有被重置,则从以前匹配操作没有匹配的第一个字符开始,即如果前一次找到与模式匹配的子序列则这次从这个子序列后开始查找。

3、Matcher.matchers():判断整个字符序列与模式是否匹配。当连续用Matcher对象检查多个字符串时候,可以使用Matcher.reset():重置匹配器,放弃其所有显式状态信息并将其添加位置设置为零。或者Matcher.reset(CharSequence input) 重置此具有新输入序列的匹配器,来重复使用匹配器。

4、组的概念,这个概念很重要,组是用括号划分的正则表达式,可以通过编号来引用组。组号从0开始,有几对小括号就表示有几个组,并且组可以嵌套,组号为0的表示整个表达式,组号为1的表示第一个组,依此类推。

例如:A(B)C(D)E正则式中有三组,组0是ABCDE,组1是B,组2是D;

A((B)C)(D)E正则式中有四组:组0是ABCDE,组1是BC,组2是B;组3是C,组4是D。

int groupCount():返回匹配其模式中组的数目,不包括第0组。

String group():返回前一次匹配操作(如find())的第0组。

String group(int group):返回前一次匹配操作期间指定的组所匹配的子序列。如果该匹配成功,但指定组未能匹配字符序列的任何部分,则返回 null。

int start(int group):返回前一次匹配操作期间指定的组所匹配的子序列的初始索引。

int end(int group):返回前一次匹配操作期间指定的组所匹配的子序列的最后索引+1。

5、匹配的范围的控制

start() 返回以前匹配的初始索引。

end() 返回最后匹配字符之后的偏移量。

public boolean lookingAt()尝试将从区域开头开始的输入序列与该模式匹配。

与 matches 方法类似,此方法始终从区域的开头开始;与之不同的是,它不需要匹配整个区域。

如果匹配成功,则可以通过 start、end 和 group 方法获取更多信息。

返回:

当且仅当输入序列的前缀匹配此匹配器的模式时才返回 true。

6、Pattern标记

Pattern类的静态方法

static Pattern compile(String regex, int flags)

将给定的正则表达式编译到具有给定标志的模式中。

其中的flags参数就是Pattern标记,这个标记在某些时候非常重要。

综合示例:

/**
问题:对正则表达式的练习。
*/

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

class Demo 
{
	public static void main(String[] args) 
	{
		String mail="apple1417@126.com";
		System.out.println("邮箱:"+mailBox(mail));

		String tel = "18623123334";
		System.out.println("手机:"+mobile(tel));

		String pass = "6666666";
		System.out.println("密码:"+passWord(pass));
		
		String ip = "192.168.1.100";
		System.out.println("ip地址:"+ipShow(ip));
	}
	//匹配ip地址
	public static boolean ipShow(String str)
	{
		String reg = "\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}";
		return str.matches(reg);
	}
	//匹配密码
	public static boolean passWord(String str)
	{
		String reg = "(![0-9]?)\\w{6,12}$";
		return str.matches(reg);
	}
	//匹配手机号
	public static boolean mobile(String str)
	{
		String reg = "1[358]\\d{9}";
		return str.matches(reg);
	}
	//匹配邮箱
	public static boolean mailBox(String str)
	{
		String reg = "\\w+@[0-9a-zA-Z]+(\\.\\w+)+$";
        return str.matches(reg);
	}
}

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

论文阅读笔记(一)细粒度图像检索 0、参考文献 [1]见微知著 http://geek.youkuaiyun.com/news/detail/191718 [2]Xiu-Shen Wei 《Selective Convolutional Descriptor Aggregation for Fine-Grained Image Retrieval》 [3]Lingxi Xie 《Fine-Grained Image Search》 1... 阅读详情

相关推荐

骗分导论 CSP、NOIP、蓝桥杯、PAT、USACO等竞赛的算法骗分技巧 轻松省三

问题来了,那么多座桥,炸一座就破坏岛屿的联系,可能性微乎其微(除非特别设计数据)。它们的价值极大,不仅能初步帮你检验程序的对错,而且,如果你不会做这道题,你就可以直接输出样例!在OI考试中最后难的题数据最后的几个,他们往往不会创造新的数据,此时就可以直接输出最后几个数据了。需要运用《骗分导论》第3章中学到的知识,先写出朴素算法,然后造一些数据,可能就会发现规律。有些时候,问题的答案可能很有特点:对于大多数情况,答案是一样的。据说,在NOIP2013中,有人最后一题不会,愤然打了个随机数,结果得了。

星卯教育-信奥教练tony 6404

Java 正则表达式(深度长文)

Java正则表达式(深度长文)

senxu_的博客 7万+

Vivado 2018.3 SDK烧写bin文件避坑指南:如何解决QSPI模式下的常见错误

本文深入解析了在Vivado 2018.3 SDK中为Zynq FPGA烧写QSPI Flash时遇到的常见问题,特别是启动模式为QSPI时出现的警告与失败。文章从Zynq启动机制入手,提供了修改FSBL代码以强制使用JTAG模式、调整硬件配置等核心解决方案,并分享了实战案例与最佳实践,帮助开发者高效避坑,确保bin文件烧写成功。

arduino9maker的博客 389

java正则表达式

目录 一、概念 二、正则表达式语法 三、捕获组 四、Pattern类与Matcher类 1.matches( ) 2.split( ) 3.find( ) 4.group 5.start( )和end( ) 6.replace替换 7.reset( ) 8.代码演示 五、正则表达式在Java中的应用 1.判断功能 2.分割功能 3.替换功能 一、概念 正则表达式(regex)是一个字符串,由字面值字符和特殊符号组成,是用来描述匹配一个字符串集合的模式,可以用来匹配、.

m0_62618110的博客 6万+

H3C VRF实验

POP-vpn-instance-RT1]route-distinguisher 11:11 # VPN实例-RT1的路由区分器值11:11。配置路由泄露,其实就是在一个VPN示例中添加另一个VPN实例的下一跳,比如在VPN实例RT1中添加去往SRV的默认路由。但是也有了一个新的问题,那就是RT1、RT2和RT3也能互访了,这让VPN实例变得没有意义了。[POP]ip vpn-instance RT1 #配置vpn实例-RT1。绑定了VPN实例,所以要把路由添加到VPN实例POP中。

m0_68698993的博客 4025

【DDSCAT——离散偶极近似仿真程序05】模型设计Matlab代码:多核壳球 、多核壳圆柱

简洁明了,后面及部分给出的都是模型设计的Matlab代码,这些代码都来自于一篇文章:Chin C W S. Localized Surface Plasmon Resonance with the use of Silver and Titanium Oxide Nanostructures[J]. 2011. 一、设计多个核壳球形结构 1)Matlab代码 ...

XD_Yangf的博客 4260

Java——正则表达式详解

Java对正则表达式的支持是从1.4版本开始的,此前的JRE版本不支持正则表达式。Java语言中的正则表达式匹配功能主要是通过和类实现的。find():在一个字符串里寻找一个给定模式的匹配:用一个给定的模式尝试匹配一个字符串的开头matches():用一个给定的模式去尝试匹配一个完整的字符串:进行替换操作,对所有的匹配都进行替换:进行替换操作,只对第一个匹配进行替换compile():把一个正则表达式编译成一个模式flags():返回某给定模式的匹配标志matches()

吴声子夜歌的博客 2万+

【CSP-J/S】复赛注意事项 上机文件组织形式

每年/S 复赛都有很多同学因为一些小失误导致一年的努力付之东流。Tony老师整理了一些复赛容易踩坑的点,或许对你有帮助!

星卯教育-信奥教练tony 1万+

java中使用正则表达式

正则表达式在处理字符串时非常有用,本篇博客来讨论一下java中正则表达式的用法。 在java.util.regex包下面有两个类,分别是Pattern和Matcher,前者表示一个正则表达式的模式,后者用来表示pattern与某个字符串的匹配信息。 Pattern类本身没有定义构造方法,可以通过Pattern.compile()静态方法来生成一个Patte

朱登凯的专栏 1万+

保姆级教程:用R语言自动化处理FAERS季度数据(从文件合并到删除废弃Case)

本文提供了一份详细的R语言教程,指导如何自动化处理FAERS季度数据,包括文件合并和删除废弃Case。通过使用tidyverse、fs等R包,构建健壮的自动化流程,特别适合药物安全监测领域的数据分析师。教程涵盖环境准备、智能合并多季度数据、精准删除废弃Case等关键步骤,并提供了错误处理与日志记录的实用技巧。

weixin_42701915的博客 126

QT上位机开发(掌握一点c++基础)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 c++是c语言的补充和扩展,本身的语法构成也是在一直迭代中。相信很多同学上大学读书的时候,或多或少对c语言有所了解,对它的变量、指针、函数也应该不陌生。既然大家都有c语言基础的话,那么在这方面稍微拓展一下的话,就可以学会c++了。当然c++本身的内容很多,很多方面还很琐碎,但我们学习的时候还是应该把精力放在那些经常使用到的语法上面。

嵌入式-老费,一个分享专业嵌入式知识的blog 1131

Java正则表达式

介绍并简单使用Java正则表达式

m0_62946761的博客 7255

从数字后端角度谈谈occ电路(一)

摘要:本文介绍了芯片测试中OCC(On-Chip Clock Control)电路的设计与应用。随着工艺进步,芯片制造面临Stuck-at、Bridging和Delay等故障类型,需要不同时钟频率进行测试。OCC电路通过Clock Selection、Clock Chopping Control和Clock Gating三个模块,实现ATE时钟与PLL时钟的切换控制,支持慢速时钟检测Stuck-at故障和快速时钟检测Delay故障。文章详细解析了OCC电路结构及各模块功能,包括同步单元、移位寄存器等关键组件

芯冰乐 585

黑马程序员总结文档汇总

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

kongbeily的专栏 2143

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

黑马程序员Java笔记

输出打印、参与运算、修改记录的值。

m0_68735537的博客 4475

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【黑马程序员JAVA笔记+完整代码】DAY02 基础语法

黑马Java网课笔记

CherryTaylor的博客 1044

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

黑马程序员Java语言进阶学习资源

黑马程序员Java语言进阶学习资源 去发现同类优质开源项目:https://gitcode.com/ 资源简介 此压缩文件包含了黑马程序员出品的Java语言进阶课程的所有源码和教程笔记。课程内容覆盖了Java编程的核心知识点,适合有一定Java基础的学习者进行进阶提升。 课程目录 以下是资源中包含的课程内容: day01: Object类、常用API day02: Collection、泛型 d...

gitblog_06712的博客 651

黑马程序员的基础班都是一些什么内容?

黑马程序员的基础班都是一些什么内容?

技术专家 1547

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

一、正则表达式 正则表达式是Java处理字符串、文本的重要工具。 Java对正则表达式的处理集中在以下两个两个类: java.util.regex.Matcher   匹配类:用模式匹配一个字符串所表达的抽象结果。 java.util.regex.Pattern   模式类:用来表示一个编译过的正则表达式。 1、正则表达式特点 正则表达式是符合一定规则的表达式, 作用

Meteor_Come 738

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

------- android培训、java培训、期待与您交流! ----------  黑马程序员-----java--正则表达式 正则表达式的构造摘要 构造 匹配   字符 x 字符 x \\ 反斜线字符 \0n 带有八进制值 0 的字符 n (0  n  7) \0nn 带有八进制值 0 的字符 n

tongxinglo的专栏 625

【黑马程序员数据库】MySQL基础大总结

【黑马程序员数据库】数据库基础大总结

⛄ 9354

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

JavaSE基础加强

孟孟单单的博客 2796

黑马程序员 — C语言基础(一)

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------

iyaochao的专栏 574

黑马程序员Java教程学习笔记(五)

黑马程序员Java教程学习笔记

末初 · mochu7 2731

黑马程序员——java基础语法

——- android培训、java培训、期待与您交流! ———-黑马程序员java基础语法 Java语言基础组成 关键字 标识符 注释 常量与变量 常量 变量 数据类型 类型转换 运算符 算术运算符 赋值运算符 比较运算符 逻辑运算符 位运算符 三元运算符 程序流程控制 判断结构 选择结构 循环结构 其他流程控制语句 函数 函数的定义 函数的特点 函数的应用 函数的重载 数组 数组的定义 数组的内

jmw__的专栏 1054

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

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- Java正则表达式 一:什么是正则表达式 1. 定义:正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是有普通的字符以及特殊字符组成的文字模式,它用以描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

qq_33863460的博客 329
上一篇: 黑马程序员--Java中UDP与TCP的实现
下一篇: 黑马程序员--Java中反射的基础
macover
博客等级 码龄12年 0粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值