欢迎光临散文网 会员登陆 & 注册

Java正则表达式

2023-01-28 21:57 作者:回到唐朝当少爷  | 我要投稿

Java正则表达式

最近刚开始学习Java,随便记一点学习笔记

Java正则表达式可参考官网API帮助文档中的Pattern类,

以下是常用的

  • 注意,正则表达式中表示交集必须要&&而不是一个&,后者仅为普通符号&

Java中\需要用转义\\表示

表示并集:|写在方括号外面表示并集,如果在方括号里面则不用写|

忽略大小写:

如果只忽略B的大小写

练习

  1. 手机号匹配

  1. 注意上述仍不严谨

  2. 座机电话号码

    020-2324242,  02122442,   027-42424,   0712-3242434

  1. 邮箱号码

    匹配如下邮箱:

    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

  1. 较严格的身份证校验

    • 前六位开头非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站专栏油猴脚本

Java正则表达式的评论 (共 条)

分享到微博请遵守国家法律