java回炉学习(十二)

本文深入讲解了Java正则表达式的基础概念,包括元字符、转义符的使用、分组捕获、反向引用,以及Pattern、Matcher类和PatternSyntaxException的运用。通过实例演示,让读者理解如何高效利用正则表达式进行文本操作。
摘要由CSDN通过智能技术生成

Java回炉学习(十二)

1. 正则表达式

  1. 基本介绍:一个正则表达式,就是用某种模式去匹配字符串的一个公式。很多人因为它们看上去比较古怪而且复杂所以不敢去使用,不过,经过练习后,就觉得这些复杂的表达式写起来还是相当简单的,而且,一旦你弄懂它们,你就能把数小时辛苦而且易错的文本处理工作缩短在几分钟(甚至几秒钟)内完成
  2. .group原理:在这里插入图片描述

2. 正则表达式语法

  1. 元字符( Metacharacter)-转义号 \\ 符号说明:在我们使用正则表达式去检索某些特殊字符的时候,需要用到转义符号,否则检索不到结果,甚至会报错的。案例:用 去 匹 配 " a b c 去匹配"abc "abc(" 会怎样?

  2. 在Java的正则表达式中,两个\代表其他语\

在这里插入图片描述
在这里插入图片描述

  1. 需要用到转义符号的字符有以下:.*+()$/\?[]^{}

  2. 在匹配某个字符串的时候是选择性的,即:既可以匹配这个,又可以匹配那个,这时你需要用到选择匹配符号|

  3. 用于指定其前面的字符和组合项连续出现多少次:

在这里插入图片描述

  1. 定位符,规定要匹配的字符串出现的位置,比如在字符串的开始还是在结束的位置,这个也是相当有用的,必须掌握

在这里插入图片描述

3. 分组

  1. (pattern)非命名捕获。捕获匹配的子字符串。编号为零的第一个捕获是由整个正则表达式模式匹配的文本,其它捕获结果则根据左括号的顺序从1开始自动编号。
  2. (?<name> pattern)命名捕获。将匹配的子字符串捕获到一个组名称或编号名称中。用于name的字符串不能包含任何标点符号,并且不能以数字开头。可以使用单引号替代尖括号,例如(?‘name’)
  3. (?:pattern)匹配pattern但不捕获该匹配的子表达式,即它是一个非捕获匹配,不存储供以后使用的匹配。这对于用"or"字符(|)组合模式部件的情况很有用。例如,'industr(?:ylies) 是比"industrylindustries更经济的表达式。
  4. (?=pattern)它是个非捕获匹配。 例如,'Windows ?=95|98|NT|2000) 匹配"Windows 2000"中的"Windows",但不四配"Windows 3.1"中的"Windows"。
  5. (?!pattern)该表达式匹配不处于匹配pattern的字符串的起始点的搜索字符串。它是一个非捕获匹配。例如,Windows (?!95|98|NT|2000)'匹配"Windows 3.1"中的"Windows",但不四配"Windows 2000"中的"Windows"。

4. java.util.regex

  1. Pattern类

    pattern对象是一个正则表达式对象。Pattern类没有公共构造方法。要创建一 个Pattern对象,调用其公共静态方法,它返回一个Pattern对象。该方法接受一个正则表达式作为它的第个参数, 比如: Pattern r = Pattern.compile(pattern);

  2. Matcher类:

    Matcher对象是对输入字符串进行解释和匹配的引擎。与Pattern类样,Matcher也没有公共构造方法。你需要调用Pattern对象的matcher方法来获得一个Matcher对象。

  3. PatternSyntaxException类

    ​ PatternSyntaxException是一个非强制异常类,它表示一个正则表达式模式中的语法错误。

5. 分组、捕获、反向引用

  1. 分组:我们可以用圆括号组成一个比较复杂的匹配模式, 那么个圆括号的部分我们可以看作是一个子表达式/一个分组。
  2. 捕获:把正则表达式中子表达式/分组匹配的内容,保存到内存中以数字编号或显式的组里,方便后面引用,从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推。组0代表的是整个正则式
  3. 反向引用:圆括号的内容被捕获后,可以在这个括号后被使用,从而写出一个比较实用的匹配模式,这个我们称为反向引用,这种引用既可以是在正则表达式内部,也可以是在正则表达式外部,内部反向引用 1分组号,外部反向引用$分组号
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程哥哥吖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值