Java正则表达式的使用

写在前面

学过形式语言与自动机的小伙伴对regex应该都不陌生了,我们简单的回顾几个离散中的概念, ( a ) ∗ (a)^{*} (a)代表的是克林闭包,代表a可以重复 ( 0 , ∞ ) (0, \infty) (0,)次,而 ( a ) + (a)^{+} (a)+代表正闭包,说明a最少出现一次。

Java中regex的应用

  • 如果想匹配一段特定的串,直接输入即可
  • 数字:\d 或者 [0-9]
  • 字母:\w 或者 [a-zA-Z]
  • 空白:\s
  • 重复0次以上:*
  • 重复1次以上:+
  • 0次或1次:?
    其他都用处不大,可以大概找手册看一遍,知道有那些东西,用的时候再去查就可以。
    Attention:在java 正则表达式中\代表反斜杠,所以转义字符前的那个斜杠要输入\才行,也就是说如果我们要去比配数字,我们要使用\\d+,而不是\d+

实际用法

字符串本身就有一个matches方法

在这里插入图片描述
我们随意选举一个字符串对象实验,可以发现matches方法返回的是一个Boolean值,如果能够匹配给出的regex就返回true,这就是最简单也是最实用的方法了。

更加复杂的用法

前面的matches方法已经非常使用了,但是有时候我们需要从大型的文本中去匹配一些对象,此时matches方法就不好使了,所以我们需要结合java提供的Pattern和Matcher类来对文本进行读取。

我们首先使用文本读取的方法将字符串读入到一个字符串对象中。
现生成一个Pattern对象,注意,这个对象只能由工厂方法创建即:

Pattern regex = Pattern.compile()

在这里插入图片描述

然后再括号内输入你想要的正则表达式即可。
接下来创建一个matcher对象,matcher对象的创建是根据之前我们已经创建的Pattern对象直接创建的:
在这里插入图片描述
其参数是我们想要匹配的文本,即我们之前从文本文件中读取的字符串,我们将其输入在括号中即可。

接下来主要有三个方法:

  • matches:只有整个字符串都符合regex,才返回true
  • lookingAt:从串的最前面开始匹配,有能够匹配的上的,就返回true
  • find:只要整个串中有匹配的地方,就返回true
    当我们用以上三个方法找到对应的匹配时,用**m.group()**方法就可以得到匹配的字符串啦。这就是regex最简单的应用了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值