java核心技术正则表达式

【Java核心技术】JavaString类正则表达式技术详解 阅读详情

1.8正则表达式

正则表达式 (regular expression)用于指定字符串的模式,你可以在任何需要定位匹配某种特定模式的字符串的情况下使用正则表达式。

 

下面是一个简单的示例:

[Jj]ava.+

匹配下列形式的所有字符串:

l         第一个字母是J或j.

l         接下来的三个字母是ava

l         字符串的其余部分由一个或者多个任意的字符构成

例如 : 字符串“javanese”就匹配这个特定的正则表达式,但是字符串“core java”就不匹配 。

 

 

具体分类

l         字符类(character class)是一个括在括号中的可选择的字符集,例如:[Jj],[0-9],[A-Za-z]或[^0-9]。这里-表示是一个范围(所有的Unicode值落在两个边界范围之内的字符),而^表示补集(除了指定字符之外的所有字符)

l         有许多预定的字符类,例如/d(数字)和/p{Sc}(Unicode货币符号)。

表1-7正则表达式语法

语法

解释

字符

c

C字符

/Unnnn,/Xnn,/0nn,/0nnn

具有给定十六进制或十进制的码元

/t,/n,/r,/f,/a,/e

控制符:制表符,换行符,回车符,换页符,警告符,逃逸符

/Cc

与字符c相关的控制符

字符类

[C1C2….]

任何由c1,c2…表示的字符,其中c1可以是多个字符字符范围(c1-c2)和字符类

[^…]

字符类的补集

[…&&…]

两个字符集的交集

预定义字符类

. 

除了行终止符之外的所有字符(DOTALL标志被设置时,则表示所有字符)

/d

一个数字[0-9]

/D

一个非数字[^0-9]

/s

一个空白字符[/t/n/r/f/x0B]

/S

一个非空白字符

/w

一个词语字符[a-zA-Z0-9_]

/W

一个非词语字符

/p{name}

一个命名字符类---请查看表1-8

/P{name}

一个命名字符类的补集

一个边界匹配符

^&

输入的开头和结尾(或者在多行模式下行的开头和结尾)

/b

一个词语边界

/B

一个非词语边界

/A

输入的开头

/z

输入的结尾

/Z

除了行终止符之外的输入结尾

/G

前一个匹配的结尾

量词

X?

可选的X

X*

X, 0或多次

X+

X,1或多次

X{n}X{n,}X{n,m}

Xn次,至少n次,在n到m次之间

量词后缀

?

将默认(贪婪)匹配转变为勉强匹配

+

将默认 (贪婪)匹配转变为占有匹配

集合操作

XY

任何X中的字符串,后面紧跟随任何Y中的字符串

X|Y

任何X或Y的字符

群组

(X)

捕捉将X作为群组匹配的字符串

/n

第n个群组的匹配

转义

/c

字符c(必须是不在字母表中的字符)

/Q……………/E

逐字地引用…………..

(?.....)

特殊结构------请查看Pattern类综中的API注释

 

表1-8预定义的字符类名字

字符类名字

解释

Lower

ASCII的小写字母[a-z]

Upper

ASCII 的大写字母[A-Z]

Alpha

ASCII 的字母[A-Za-z]

Digit

ASCII的数字[0-9]

Alnum

ASCII的字母或数字[A-Za-z0-9]

XDigit

十六进制数字[0-9A-Fa-f]

Print或Graph

可打印的ASCII字符[/x21-/x7E]

Punct

ASCII的非字母和数字字符[/p{Print}&&/P{Alnum}]

ASCII

所有的ASCII字符[/x00-/x7F]

Cntrl

ASCII控制字符[/x00-/x1F]

Blank

空格字符或制表符[/t]

Space

空白字符[/t/n/r/f/0x0B]

javaLowerCase

小写字母,正如Character.isLowerCase()确定的字符

javaUpperCase

大写字母,正如Character.isUpperCase()确定的字符

javaWhiteSpace

空白字符,正如Character.isWhitespace()确定的字符

javaMirrored

镜像字符,正如 Character.isMirrored()确定的字符

InBlock

Block是Unicode字符块的名字,不过要剔除名字中的空格,例如BasicLatin和Mongolian。请查看 http://www.unicode.org已了解字符块名字列表

Category或InCategory

Category是Unicode字符类别的名字,例如,L(字母)和Sc(货币符号)。请查看http://www.unicode.org以了解字符类别名字列表

 

 

l         大部分字符都可以与它们自身匹配,例如在前面示例中的ava字符

l         符号可以匹配任何字符(有可能不包括行终止符,这取决于标志的设置)

l         使用 /  作为转义字符,例如, / . 匹配句号 而// 匹配反斜线。

l         ^和&分别匹配一行的开头和结尾。

l         如果X和Y是正则表达式,那么XY表示“任何X的匹配后面跟随Y的匹配”,X|Y表示“任何X和Y的匹配”。

l       你可以将量词运用到表达式X:X+(1个或多个)、X*(0个或多个)与X?(0个或1个)。

l         默认情况下,量词要匹配能够使整个匹配成功的最大可能的重复次数。你可以修改这种行为,方法是使用后缀? (使用勉强或吝啬匹配,也就是匹配最小的重复次数)或使用后缀+(使用占有或贪婪匹配,也就是即使让这个匹配失败,也要匹配最大的重复次数)。 例如 ,字符串cab匹配[a-z]*ab ,但是不匹配[a-z]*+ab。 在第一种情况中,表达式[a-z]*匹配字符c,使得字符ab匹配模式的剩余部分 ;但是贪婪版本[a-z]*+将匹配字符串cab,模式的剩余部分将无法匹配。

l         我们使用群组来定义子表达式,其中群组用括号()括起来。例如,([+-]?) ([0-9]+)。然后你可以询问模式匹配器,让其返回每个组的匹配,也可以用/n来引用某个群组,其中n是群组号 (从/1开始)。 例如,下面一个有些复杂但是却可能很有用的正则表达式,它描述了十进制和十六进制整数:[+-]?[0-9]+|[Xx][0-9A-Fa-f]+

l          

 嵌套群组是按照前括号排序的,例如,假设我们有下面的模式

 ((1?[0-9] ): ([0-5][0-9]) ) [ap]m和下面的输出

 11:59am

 

那么,匹配器会报告下面的群组:

群组索引            开始          结束           字符串

 0                    0             7              11:59am

 1                    0           5               11:59

 2                    0            2               11

 3                    3             5              59

 

 

以上是java核心技术第二卷中的正则表达式,运用很实用的也是群组这个概念,又兴趣请查相关资料分析,有什么经验大家一起交流。

Java 中高级面试题:16题 在这些情况下,应用程序创建了大量对象但并未使用它们,并且每个对象都有一些有效引用,Java 中的垃圾收集器无法销毁这些对象。JVM 中有不同类型的垃圾收集,每种垃圾收集都有不同的特点和性能影响。JDBC API 组件提供了各种方法和接口,以便于与数据库进行轻松通信,同时还提供了 java Se 和 java EE 等软件包,提供了一次编写即可在任何地方运行 (WORA) 的功能。线程优先级是这样的概念:每个线程都有一个优先级,用外行人的语言来说,可以说每个对象都有优先级,用 1 到 10 之间的数字表示。 阅读详情

相关推荐

基于FastLIO2与TEB算法的机器狗自主导航系统实战

本文详细介绍了如何为机器狗构建一套基于FastLIO2与TEB算法的自主导航系统。通过整合FastLIO2激光惯性里程计实现精准定位,并采用TEB局部规划器进行灵活路径规划与动态避障,解决了传统方案在复杂地形下反应慢、易碰撞的问题。文章提供了从环境搭建、算法部署、地图转换到系统调试的完整实战指南,帮助开发者实现机器狗的稳健自主行走。

beer8的博客 324

Java 正则表达式

Java 正则表达式

博客 629

PCout(n) -- STM32F103RCT6 位带操作

位带操作,sys.h,PCout,PAout,PAout

weixin_50212044的博客 4022

java核心技术之正则表达式

1.正则表达式正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE)。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串2.元字符: 元字符 正则表达式的写法 意义 . “.” 任意一个字符 ^ “^Spring” 以Spring开始的字符 “EEEE$” 匹

hfreeman2008的专栏 1143

避开这5个坑!Tushare数据获取与清洗的常见问题解决方案

本文详细解析了使用Tushare进行金融数据分析时常见的5大问题,包括Token失效、数据缺失、频率限制等,并提供了Python实战解决方案。通过智能填充策略、队列化管理和分层存储设计,帮助开发者高效获取和清洗金融数据,提升量化分析效率。特别适合金融数据分析师和Python开发者参考。

f9g0h的博客 425

数学建模--十大经典常用算法

数学建模十大算法:灰色预测,蒙特卡洛,遗传算法,模拟退火法,组合算法,神经网络,动态规划,聚类算法,类比法,概率算法,Floyd算法

qq_51533426的博客 5647

Java正则表达式(摘自<<Java核心技术>>)

Java正则表达式语法(类Perl,但有些区别) 语法 解释 字符 c 字符c \Unnnn,\Xnn,\0n,\0nn,\0nnn 具有给定十六进制或十进制值的码元 \t,\n,\r,\f,\a,\e 控制符: 制表符,换行符,回车符,换页符,警告符,符 \Cc 与字符c相关的控制符 字符类 [C1C2…] 任何由C1,C2,…表示的字

从头来过 611

ESP32+MAX7219二进制时钟设计与嵌入式时间映射实践

二进制时钟是嵌入式系统中数据表示与物理呈现深度耦合的典型范例,其核心在于将时间语义(年月日时分秒)解构为比特位,并通过LED点阵的空间权重布局实现直观识别。该设计依托RTC模块提供时间基准,依赖SPI协议完成微控制器与专用驱动芯片(如MAX7219)的可靠通信,涉及寄存器级配置、位图坐标变换、软硬件时序对齐等关键原理。技术价值体现在低资源占用下的高可读性人机交互,适用于教学演示、极客项目及嵌入式UI原型开发。本文聚焦ESP32平台在MicroPython环境下,结合MAX7219驱动8×8点阵实现高可靠性二

weixin_42160645的博客 303

别慌!OVS报错‘ovsdb-server.service is not running’?这份保姆级排查手册帮你搞定

本文提供了一份详细的OVS核心服务ovsdb-server异常诊断指南,帮助用户解决‘ovsdb-server.service is not running’报错问题。从服务状态检查到系统安全策略,再到数据库完整性验证,全方位覆盖排查流程,适用于Kubernetes网络插件和SDN实验环境调试。

408

【乐企文件生成工程】添加数据库、SpringEvent事件支持

更新!1、乐企版式文件生成工程添加数据库支持2、乐企版式文件生成工程添加事件机制,异步处理文件生成,提高系统并发能力。

九七的博客 337

作物生长模型Oryza V3实战10:运行文件参数详解

运行文件(.rer)用于批量模拟农业场景,包含多组参数集(Rerunset),每组设定独立的时间范围、灌溉施肥方案等,支持测试不同农艺措施效果。该文件可实现参数自动校准,通过多组参数组合迭代寻找最优值。模拟结果文件(res.dat)会记录全部测试时间段的数据,便于用户对比产量、水分利用率等指标,筛选最优方案或分析气候适应性策略。

209

java核心技术卷2-1.8 正则表达式

正则表达式 2018年11月23日 星期五 下午3:57 通过Pattern pattern = Pattern.compile(str)创造正则表达式 Matcher matcher = pattern.matcher(input)来获得一个匹配matcher matcher.matches()全部匹配 matcher.find()部分匹配 matcher.groupCount() 获得群组个数...

qq_39510118的博客 773

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Java核心技术 正则表达式

正则表达式(regular expression)用于指定字符串的模式,可以在任何需要定位匹配某种特定模式的字符串的情况下使用正则表达式。 简单示例: [Jj]vaa.+ 匹配下列形式的所有字符串: 1.第一个字母是J或j 2.接下来三个字母是ava 3.字符串的其余部分有一个或多个任意字符构成 大多数情况下,一小部分很直观的语法结构就足够了: 1.字符类(character cl...

花开不合阳春暮 407

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Java核心技术 正则表达式补充

1.Qulifiers​ Greedy quantifiers X? X* X+ X{n} X{n,} X{n,m}​ Reluctant quantifiers X?? 后多跟一个问号​ Possessive quantifiers X?+ 后多跟一个加号​ public class Test { public static void main(String a...

花开不合阳春暮 264

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

《Java核心技术卷二》笔记(三)正则表达式

正则表达式语法 一个正则表达式描述了字符串的构成规则(模式)。如果一个具体的字符串正好符合正则表达式描述的这个规则,这个字符串就是与表达式匹配的。先看一下怎么描述这种规则,也就是正则表达式语法。正则表达式类似于前面文章中的glob模式,但更加复杂和强大。 此处只列出常用的语法,更复杂的可以查正则表达式的详细资料。 正则表达式的构成元素: 字符 普通字符 与...

weixin_30480583的博客 141

《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一2.7 正则表达式

2.7 正则表达式 正则表达式(regular expression)用于指定字符串的模式,你可以在任何需要定位匹配某种特定模式的字符串的情况下使用正则表达式。例如,我们有一个示例程序就是用来定位HTML文件中的所有超链接的,它是通过查找模式的字符串来实现此目的的。当然,在指定模式时,...标记法并不够精确。你需要精确地指定什么样的字符序列才是合法的匹配...

weixin_34019144的博客 177

JAVA简单小爬虫 & 《JAVA2核心技术卷1:基本知识(原书第7版)》源代码

简单爬虫 这段代码源自《JAVA2核心技术卷1:基本知识(原书第7版)》例12-10: import java.io.*; import java.net.*; import java.util.regex.*; public class HrefMatch { public } ...

一出好剧 196

Java 核心技术 卷Ⅱ

这一卷流库和I/O流还是很重要的,得看看。

菜鸟猿++ 1296

Java——正则表达式详解_java正则表达式,零基础入门到精通,收藏这篇就够了

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

Javachichi的博客 811

java 正则 获取域名

Java正则表达式获取域名 作为一名经验丰富的开发者,我很高兴能够帮助你学习如何使用Java正则表达式来获取域名。在这篇文章中,我将向你介绍整个流程,并提供详细的代码示例和注释。 流程图 首先,让我们通过一个流程图来了解整个过程: #render_12_2406181709-svg{font-family:"trebuch...

weixin_41073725的博客 385

正则表达式的尝试使用

杭电2005:http://blog.youkuaiyun.com/ieayoio/article/details/38092929

ieayoio 812

java正则表达式,零基础入门到精通,收藏这篇就够了

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

leah126的博客 834

【Linux中vim系列】如何在vim中检索字符串

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨。

优快云站内信: https://i.youkuaiyun.com/#/msg/chat/qyj19920704 1万+

Java正则表达式5大实战场景解析

特别是处理复杂正则时,平台的一键部署功能可以直接把测试案例变成可分享的在线工具,省去了搭环境的麻烦。正则表达式是Java开发中处理文本的瑞士军刀,今天结合个人经验总结5个高频使用场景,帮你在实际项目中快速落地。建议每个正则表达式都准备正向和反向测试用例,平台能保存多个测试文件,切换起来比本地开发更高效。工作中经常需要从海量日志中提取关键信息,比如错误码和时间戳。遇到复杂结构可以考虑分步处理,避免写过于复杂的正则。建议清洗前先做样本分析,针对性地设计正则表达式。测试时一定要考虑多行日志的情况,可以用。

GreyWolf12的博客 509

CGBTN2111-DAY12总结复习,java面试题高级

我想问下大家当初选择做程序员的初衷是什么?有思考过这个问题吗?高薪?热爱?既然入了这行就应该知道,这个行业是靠本事吃饭的,你想要拿高薪没有问题,请好好磨练自己的技术,不要抱怨。有的人通过培训可以让自己成长,有些人可以通过自律强大的自学能力成长,如果你两者都不占,还怎么拿高薪?架构师是很多程序员的职业目标,一个好的架构师是不愁所谓的35岁高龄门槛的,到了那个时候,照样大把的企业挖他。为什么很多人想进阿里巴巴,无非不是福利待遇好以及优质的人脉资源,这对个人职业发展是有非常大帮助的。

m0_56169789的博客 1053
上一篇: Eclipse的内存优化与内存不足问题
下一篇: Java环境配置与设置JAVA_HOME,CLASSPATH,PATH的目的 转载
tangxininjava
博客等级 码龄16年 14粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值