Java正则表达式
最近刚开始学习Java,随便记一点学习笔记
Java正则表达式可参考官网API帮助文档中的Pattern类,
以下是常用的
(相关资料图)
注意,正则表达式中表示交集必须要&&而不是一个&,后者仅为普通符号&
Java中\需要用转义\\表示
表示并集:|写在方括号外面表示并集,如果在方括号里面则不用写|
忽略大小写:
如果只忽略B的大小写
练习
手机号匹配
注意上述仍不严谨
座机电话号码
020-2324242, 02122442, 027-42424, 0712-3242434
邮箱号码
匹配如下邮箱:
3232323@qq.com: mailto:3232323@qq.com
zhangsan@itcast.cnn: mailto:zhangsan@itcast.cnn
dleie0e9@163.com: mailto:dleie0e9@163.com
dleicee@pci. com.cn
较严格的身份证校验
前六位开头非0:[1-9]\d{5}
年只能18 19 20 开头: (18|19|20)
年后半段任意数字出现两次: \\d{2}
月份01 ~ 09 10 11 12: (0[1-9]|1[0-2])
日期01 ~ 09 1019 2029 30 31:(0[1-9]|[12]\\d|3[01])
后面4位,任意数字出现3次,最后一位可为X或x : \\d{3}[\\dXx]
分享:插件any-rule提供了常用情况的正则表达式模板
idea可按alt+鼠标 矩形选中
匹配段落中的文本
为了找到所有的匹配信息应采用循环的方式
带有选择性的数据爬取
文本:
Java自从95年问世以来,经历了很多版本,目前企业中用的最多的是Java8和Java11,因为这两个是长期支持版本,下一个长期支持版本是Java17,相信在未来不久Java17也会逐渐登上历史舞台。
需求1: 爬取版本号为8,11,17的Java文本,但是只要Java,不显示版本号。
需求2:爬取版本号为8,11,17的Java文本。正确爬取结果为:Java8 Java11 Java17 Java17
需求3:爬取除了版本号为8,11.17的Java文本
贪婪爬取和非贪婪爬取
贪婪爬取:在爬取数据的时候尽可能多获取数据非贪婪爬取:尽可能少获取
例:abbbbbbbbbbbbb正则表达式:ab+
贪婪爬取:abbbbbbbbbbbbb非贪婪爬取:ab
Java默认为贪婪爬取
只写+和*表示贪婪匹配
+? 非贪婪匹配
*? 非贪婪匹配
分组括号
用()表示分组
每组是有组号的,也就是序号
规则1:从1开始连续不间断
规则2:以左括号为基准,最左边的是第一组,其次为第二组,以此类推
捕获分组
//组号:表示把第X组的内容再拿出来用一次
练习:口吃替换
需求:
将字符串:我要学学编编编编程程程程程程。
替换为:我要学编程
捕获分组:后序还要继续使用本组的数据
正则内部使用\组号
正则外部使用$组号
非捕获分组:分组之后不需要再使用本组数据,仅仅是把数据括起来
非捕获分组不占用组号
以下写法是错误的:
感谢Up主@LuckyPuppy514制作的Markdown转B站专栏油猴脚本