正则表达式详解

Java正则表达式【详解】 java正则表示式详解 阅读详情
精确地查找hi这个单词的话,我们应该使用\bhi\b 
\b匹配单词的开始或结束 
例: \bhi\b.*\bLucy\b先是一个单词hi,然后是任意个任意字符(但不能是换行),最后是Lucy这个单词。 
例: 0\d\d-\d\d\d\d\d\d\d\d匹配这样的字符串:以0开头,然后是两个数字,然后是一个连字号“-”,最后是8个数字 
例: 0\d{2}-\d{8}。这里\d后面的{2}({8})的意思是前面\d必须连续重复匹配2次(8次) 
\s匹配任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格 
\w匹配字母或数字或下划线或汉字 
\d+匹配1个或更多连续的数字,匹配重复1次或更多次。 
^匹配你要用来查找的字符串的开头,$匹配结尾。比如一个网站如果要求你填写的QQ号必须为5位到12位数字时:^\d{5,12}$。 
字符转义 deerchao\.net匹配deerchao.net,C:\\Windows匹配C:\Windows
代码/语法 说明 
* 重复零次或更多次 
+ 重复一次或更多次 
? 重复零次或一次 
{n} 重复n次 
{n,} 重复n次或更多次 
{n,m} 重复n到m次

[aeiou]就匹配任何一个英文元音字母,[.?!]匹配标点符号(.或?或!)。 
指定一个字符范围,像[0-9]代表的含意与\d就是完全一致的:一位数字;同理[a-z0-9A-Z_]也完全等同于\w(如果只考虑英文的话)。 
例:\(?0\d{2}[) -]?\d{8} 
“(”和“)”也是元字符,后面的分组节里会提到,所以在这里需要使用转义。 
这个表达式可以匹配几种格式的电话号码,像(010)88886666,或022-22334455,或02912345678等。我们对它进行一些分析吧: 
首先是一个转义字符(,它能出现0次或1次(?),然后是一个0,后面跟着2个数字(\d{2}),然后是)或-或空格中的一个,它出现1次或不出现(?),最后是8个数字(\d{8})。

分枝条件 “|” 
0\d{2}-\d{8}|0\d{3}-\d{7}这个表达式能匹配两种以连字号分隔的电话号码: 
一种是三位区号,8位本地号(如010-12345678),一种是4位区号,7位本地号(0376-2233445)。 
例:\d{5}-\d{4}|\d{5}这个表达式用于匹配美国的邮政编码。美国邮编的规则是5位数字,或者用连字号间隔的9位数字。 
之所以要给出这个例子是因为它能说明一个问题:使用分枝条件时,要注意各个条件的顺序。 
如果你把它改成\d{5}|\d{5}-\d{4}的话,那么就只会匹配5位的邮编(以及9位邮编的前5位)。原因是匹配分枝条件时,将会从左到右地测试每个条件,如果满足了某个分枝的话,就不会去再管其它的条件了。
ip地址匹配 
(\d{1,3}\.){3}\d{1,3}是一个简单的IP地址匹配表达式。要理解这个表达式,请按下列顺序分析它: 
\d{1,3}匹配1到3位的数字,(\d{1,3}\.){3}匹配三位数字加上一个英文句号(这个整体也就是这个分组)重复3次, 
最后再加上一个一到三位的数字(\d{1,3})。
代码/语法 说明 
\W 匹配任意不是字母,数字,下划线,汉字的字符 
\S 匹配任意不是空白符的字符 
\D 匹配任意非数字的字符 
\B 匹配不是单词开头或结束的位置 
[^x] 匹配除了x以外的任意字符 
[^aeiou]匹配除了aeiou这几个字母以外的任意字符 
例:\S+匹配不包含空白符的字符串。 
<a[^>]+>匹配用尖括号括起来的以a开头的字符串。

后向引用 
使用小括号指定一个子表达式后,匹配这个子表达式的文本(也就是此分组捕获的内容)可以在表达式或其它程序中作进一步的处理。 
默认情况下,每个分组会自动拥有一个组号,规则是:从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推。 
后向引用用于重复搜索前面某个分组匹配的文本。例如,\1代表分组1匹配的文本。难以理解?请看 
示例: 
\b(\w+)\b\s+\1\b可以用来匹配重复的单词,像go go, 或者kitty kitty。这个表达式首先是一个单词,也就是单词开始处和结束处之间的多于一个的字母或数字(\b(\w+)\b),这个单词会被捕获到编号为1的分组中,然后是1个或几个空白符(\s+),最后是分组1中捕获的内容(也就是前面匹配的那个单词)(\1)。 
你也可以自己指定子表达式的组名。 
要指定一个子表达式的组名,请使用这样的语法:(?<Word>\w+)(或者把尖括号换成’也行:(?'Word'\w+)),这样就把\w+的组名指定为Word了。要反向引用这个分组捕获的内容,你可以使用\k,所以上一个例子也可以写成这样:\b(?<Word>\w+)\b\s+\k<Word>\b


分类 代码/语法 说明 
捕获 (exp) 匹配exp,并捕获文本到自动命名的组里 
捕获 (?<name>exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp) 
捕获 (?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号 
零宽断言 (?=exp) 匹配exp前面的位置 
零宽断言 (?<=exp) 匹配exp后面的位置 
零宽断言 (?!exp) 匹配后面跟的不是exp的位置 
零宽断言 (?<!exp) 匹配前面不是exp的位置 
注释 (?#comment) 这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读 
(?=exp)也叫零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式exp。比如\b\w+(?=ing\b), 
匹配以ing结尾的单词的前面部分(除了ing以外的部分),如查找I’m singing while you’re dancing.时,它会匹配sing和danc 
(?<=exp)也叫零宽度正回顾后发断言,它断言自身出现的位置的前面能匹配表达式exp。比如(?<=\bre)\w+\b 
会匹配以re开头的单词的后半部分(除了re以外的部分),例如在查找reading a book时,它匹配ading。 
(?<=\s)\d+(?=\s)匹配以空白符间隔的数字(再次强调,不包括这些空白符)。
负向零宽断言 
\b\w*q[^u]\w*\b匹配包含后面不是字母u的字母q的单词。但是如果多做测试(或者你思维足够敏锐,直接就观察出来了),你会发现,如果q出现在单词的结尾的话,像Iraq,Benq, 
这个表达式就会出错。这是因为[^u]总要匹配一个字符,所以如果q是单词的最后一个字符的话,后面的[^u]将会匹配q后面的单词分隔符(可能是空格,或者是句号或其它的什么), 
后面的\w*\b将会匹配下一个单词,于是\b\w*q[^u]\w*\b就能匹配整个Iraq fighting。负向零宽断言能解决这样的问题,因为它只匹配一个位置,并不消费任何字符。 
现在,我们可以这样来解决这个问题:\b\w*q(?!u)\w*\b。 
零宽度负预测先行断言(?!exp),断言此位置的后面不能匹配表达式exp。例如:\d{3}(?!\d)匹配三位数字,而且这三位数字的后面不能是数字; 
\b((?!abc)\w)+\b匹配不包含连续字符串abc的单词。 
同理,我们可以用(?<!exp),零宽度负回顾后发断言来断言此位置的前面不能匹配表达式exp:(?<![a-z])\d{7}匹配前面不是小写字母的七位数字。 
请详细分析表达式(?<=<(\w+)>).*(?=<\/\1>),这个表达式最能表现零宽断言的真正用途。 
一个更复杂的例子:(?<=<(\w+)>).*(?=<\/\1>)匹配不包含属性的简单HTML标签内里的内容。(?<=<(\w+)>)指定了这样的前缀:被尖括号括起来的单词(比如可能是<b>), 
然后是.*(任意的字符串),最后是一个后缀(?=<\/\1>)。注意后缀里的\/,它用到了前面提过的字符转义;\1则是一个反向引用,引用的正是捕获的第一组,前面的(\w+)匹配的内容, 
这样如果前缀实际上是<b>的话,后缀就是</b>了。整个表达式匹配的是<b>和</b>之间的。
注释 
小括号的另一种用途是通过语法(?#comment)来包含注释。例如:2[0-4]\d(?#200-249)|25[0-5](?#250-255)|[01]?\d\d?(?#0-199)。 
要包含注释的话,最好是启用“忽略模式里的空白符”选项,这样在编写表达式时能任意的添加空格,Tab,换行,而实际使用时这些都将被忽略。 
启用这个选项后,在#后面到这一行结束的所有文本都将被当成注释忽略掉。
贪婪与懒惰 
a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配。 
a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab(第一到第三个字符)和ab(第四到第五个字符)。 
代码/语法 说明 
*? 重复任意次,但尽可能少重复 
+? 重复1次或更多次,但尽可能少重复 
?? 重复0次或1次,但尽可能少重复 
{n,m}? 重复n到m次,但尽可能少重复 
{n,}? 重复n次以上,但尽可能少重复

http://blog.youkuaiyun.com/u011637078/article/details/78346995

PHP匹配连续的数字或字母的正则表达式 正则表达式的写法规则:“/规则需要写在2个斜杠中间/”。 (. :小数点)用于匹配除换行符之外的所有字符。 (\s:反斜杠小写s)用于匹配单个空格符,包括tab键和换行符; (\S:反斜杠大写S)用于匹配除单个空格符之外的所有字符; (\d:反斜杠d)用于匹配从0到9的数字;也可以这样写:[0-9] (\w:反斜杠小写w)用于匹配字母,数字或下划线字符; (\W:反斜杠大写W)用于匹配所有与\w不匹配的字符; 元字符包括: +, *,? 元字符理解起来容易混淆,所以我在后面做了代码结果截图 代码如下: “+”元字符规定其前导字符必须连续出现一次或多次 = 比如/es+/ 与“tesseesss 立即下载

相关推荐

YOLO详解

本文参考知乎 https://zhuanlan.zhihu.com/p/25236464 1. YOLO的创新点 YOLO将物体检测作为回归问题求解。基于一个单独的end-to-end网络,完成从原始图像的输入到物体位置和类别的输出。 从网络设计上,YOLO与two steps的目标检测方法如RCNN、Fast RCNN和Faster RCNN的区别如下: YOLO训练和检测均是在一个单独网...

UnknownPlayer的博客 9958

正则表达式(4):连续次数的匹配

聪明如你一定看懂了,没错,”\{2\}”就表示”连续出现2次”,所以,”a\{2\}”就表示a连续出现两次,可以看到,包含2个连续字母a的行只有第二行,所以,当我们使用正则表达式”a{2}”时,只能匹配到第二行,由于第一行中的两个字母a中间存在”空格”,所以并不能算作两个连续的字母a,所以没有被匹配到。正则表达式中,我们指定,b字母连续出现2次则会被匹配到,所以,第4行被匹配到了,同时,第5行也被匹配到了,因为第5行中,b字母连续出现了3次,包含2次,所以,前2个连续的字母b也被匹配到了。

qq_40531442的博客 3051

微信小程序后台定位与实时位置更新的实战指南

本文提供了微信小程序实现后台定位与实时位置更新的完整实战指南。针对小程序退到后台后位置更新中断的痛点,详细解析了基于`startLocationUpdateBackground`API的后台定位解决方案。内容涵盖从隐私协议配置、项目权限声明,到授权、启动、监听、停止的核心代码流程,并分享了真机调试、性能优化及权限引导等关键避坑经验,帮助开发者构建稳定可靠的后台位置服务。

weixin_29008055的博客 472

正则表达式匹配连续出现的字符串

正则表达式匹配连续出现的字符,比如:abcdefgaabb__hh---。 如果需要找出aa、bb、__、hh、---这些连续出现的字符串可以使用正则表达式:"(.)(\1)+"。即可找出对应的字符串。.表示匹配任意连续出现的字符串,也可以指定你想要匹配的项。 ...

yincheng_917的博客 7124

华为OD机考双机位C卷 - AI处理器组合 (Java & Python & JS & GO & C++ & C)

> 2026华为OD机试双机位C卷 - 华为OD上机考试双机位C卷 华为OD机试双机位C卷真题目录点击查看: [【全网首发】2026华为OD机位C卷 机考真题题库含考点说明以及在线OJ(OD上机考试双机位C卷)](https://blog.youkuaiyun.com/banxia_frontend/article/details/155503868)

算法大师! 233

Redhawk:toggle rate从哪来?

redhwak中toggle rate的相关设置

m0_61544122的博客 8124

iOS 正则表达式相关

转载自:http://www.jianshu.com/p/00da4d87b777 iOS 正则表达式初探    iOS开发-正则表达式 正则表达式是一种用来进行文本匹配的工具,其语法优美简洁。在开发中,查找、对比以及匹配字符串是家常便饭的业务,通过正则表达式我们将这些业务描述成某些需求规则,来让我们的代码更美观、实用。例如我们要验证用户输入的密码长度是

boyuanguiren的博客 452

YOLOv11的嗅觉传感器数据关联-(特殊场景下的气味-视觉联合分析)

摘要 本文探讨了YOLOv11与嗅觉传感器融合的多模态感知技术。通过分析YOLOv11的架构特性与嗅觉传感器的数据特点,提出了三种融合策略:数据级、特征级和决策级融合。系统采用硬件同步方案实现时空对齐,包含视觉采集模块、嗅觉传感模块和边缘计算单元。环境配置基于Python 3.9和PyTorch 2.0,支持实时多模态数据处理。该技术可应用于环境监测、工业检测等场景,突破单一视觉感知的局限性。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 627

使用正则表达式匹配相同连续字符(字符串压缩)

今天遇到个问题,需求是字符串压缩:给定输入为英文字母组成的字符串,对字符串进行压缩,'abbbcc'压缩为‘ab3c2’,即统计连续相同字符个数,将字符连续出现2次及以上的子串压缩为“字母+出现次数”的形式。这个问题的解法很简单,很容易想到遍历字符串来统计的方式,不过这个方法弊端是代码要写好多行。该正则表达式使用了"\1"这样的特殊匹配符号,它会匹配正则本身第一个括号匹配的内容。相比遍历字符串的方法的多行代码,运用正则和replace函数的解法简洁太多了。

weixin_52901235的博客 2192

【专栏必读】王道考研408计算机网络+湖科大教书匠计算机网络+网络编程万字笔记使用说明及章节导航

本文档汇总了王道考研408计算机网络和湖科大教书匠计算机网络课程的重点内容,包括计算机网络体系结构、物理层、数据链路层、网络层、传输层和应用层的详细讲解。通过ISO/OSI和TCP/IP模型,深入探讨了通信基础、介质访问控制、IP地址、TCP/UDP协议、流量控制和网络编程等关键概念。此外,还提供了Linux网络编程实践,帮助读者巩固理论知识

快乐江湖的博客 2万+

[QMT量化交易小白入门]-七、可转债双低策略Python代码详解与实战

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步,自己淋过雨了,希望大家都有一把伞。

木头大左的博客 3873

正则表达式

正则表达式匹配连续相同字符: 如: 匹配字符串中连续出现2个相同的字符: abcaaa11223 ([0-9a-zA-Z])\1 能匹配出aa1122 匹配字符串中连续出现3个相同的字符: abcaaa11223 ([0-9a-zA-Z])\1{2} 能匹配出aaa 解释:正则表达式中的小括号()是代表分组的意思,如果在其后出现\1则是代表与第一个小括号中要匹配的内容相同。 注意:\...

weixin_43740552的博客 373

Android P车机添加屏幕多指全局自定义手势操作

参照原生状态栏全局下拉手势拦截,实现屏幕全局多指手势响应操作,并对手势进行转换为KeyEvent,以便项目自定义手势行为或应用拦截手势行为。

shusuanly的博客 1252

详解JMeter正则表达式提取器

应用场景:在一个线程组中,B请求需要使用A请求返回的数据,也就是常说的关联,将上一个请求的响应结果作为下一个请求的参数,则需要对A请求的响应报文使用后置处理器,其中最方便最常用的就是正则表达式提取器了。正则表达式提取器:允许用户从作用域内的sampler请求的服务器响应结果中通过正则表达式提取值所需值,生成模板字符串,并将结果存储到给定的变量名中。先上个图:各配置项介绍:APPly to:作用范围...

六月的风 6万+

数学建模模型总结

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

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

21 正则表达式详解 | java正则表达式 | java验证手机号和邮箱格式的正则表达式

正则表达式在线生成工具 http://tools.jb51.net/regex/create_reg 正则表达式详解 https://www.cnblogs.com/mingxiastory/p/5426913.html java正则表达式 https://www.runoob.com/java/java-regular-expressions.html java验证手机号和邮箱格式...

shmily的博客 722

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

【Linux】grep超级大详解,(拓展)正则表达式

本文详细解释了Linux命令中grep的用法。特别解释了grep匹配字符串的默认形式,常用的选项,正则表达式和拓展正则表达式的区别和运用方法。

m0_62079974的博客 4874

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

java正则表达式详解_Logstash Grok详解

介绍Logstash的Grok 可以使蹩脚的、无结构,杂乱无章的的日志内容结构化需要注意的地方grok 模式是正则表达式,因此这个插件的性能受到正则表达式引擎影响,效率并不高。如果通过给定的匹配格式匹配不上,那么Kibana查询的时候会自动打上tag 为grok failed的标签。为什么通过正则表达式效率不高?个人见解:如果你的每一条日志都是无结构的,那么Grok 需要对每一条日志...

weixin_39525812的博客 461

java正则表达式详解

一、正则表达式术语 1)元字符 : 非一般字符,具有某种意义的字符。如 : \bX : \b边界符, 以 X开始的单词 2)正则表达式语法大全 字符 说明 \ 将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,"n"匹配字符"n"。"\n"匹配换行符。序列"\\"匹配"\","\("匹配"("。 ...

二十同学 12万+

正则表达式 RegExp【详解】

常用正则表达式大全https://www.cnblogs.com/zxin/archive/2013/01/26/2877765.html 验证保留两位小数的正整数或0 /^([1-9]\d*|0)(\.\d{1,2})?$/ 验证手机号码,如13908653654 /^(1[3|5|7|8][0-9]{9})$/ 验证固定号码,如010-86551122或01086551122 /^((0\d{2,3})[-]?)(\d{7,8})([-]?(\d{3,}))?$/ 验证电话号码—手.

朝阳39的博客 4万+

python正则表达式详解

python正则表达式详解 说明: 关于内容:每个知识点尽量用简明方式表述,同时用示例说明,方便以后查阅,方便理解 关于访问:为避免浪费某些同学的时间,先列出所有的内容提要,如果符合要求,则请继续阅读,如果不符合要求,则可以离开。 关于权限:仅用于学习与分享,转载主注明出处。 内容提要: 一、正则表达式 1.1 对正则表达式的理解及python中正则使用的基本方法 1.1.1对正则表...

路在脚下 846

Java——正则表达式详解

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

吴声子夜歌的博客 2万+

linux 正则表达式详解

声明 基础正则表达式 基础正则表达式语法 样例详解 查找特定字符串 使用list规则来进行查找 对行首和行尾字符进行限定 任意一个字符与重复字符 限定连续字符范围 拓展正则表达式 扩展正则表达式语法 样例详解 重复一个或一个以上的前一个RE字符 零个或者一个前一个RE字符 或 查找组 多个重复组判断 强调 声明 以下内容均总结自鸟哥私房菜这本书,如想详细了...

超人不会飞 1099
上一篇: (七)MapReduce字数统计程序
下一篇: Android计算器小程序
TimliangL
博客等级 码龄9年 17粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值