Java正则表达式

  • Java正则表达式的引入

Java对于字符串更加敏感,与字符串处理相关的用法也很多。下面我们对正则表达式对字符串的匹配、替换和拆分的功能和语句进行记录。

  • 字符串集的匹配

如果让我们判断两个字符串是否完全相同,我们会想到用语句:

String str;

str.equals(“java”);来判断,

其实  str.matches(“java”);也可以达到同样的效果,此外,此语句搭配正则表达式,有更加强大的功能。不仅可以匹配一个固定的字符串,还可以匹配一个模式的字符串集,返回值为true或false。

比如:”java is great”.matches(“java.*”);true

”java is great”.matches(“java*”);false

仔细对比一下,是有区别的哦!

读到这不要疑惑,下面我们看看正则表达式的表示规则就明白啦:

  1. x :我们指定的字符,(要是一模一样肯定匹配呀)
  2. 万能点 . :可以代表任意一个字符(除换行符)(名字我自己起的,方便记忆)。 例如:java匹配j..a
  3. 小隔间 (ab|cd) :ab或者cd(字符串)。例如:"java is great".matches("(java|ww|ee)[\\s]is great");true
  4. 排排坐 [abc] :a或者b或者c中的一个。           例如:java匹配ja[uytv]
  5. 赶走排排坐 [^abc] :除了a、b、c以外的任意一个字符。
  6. 手牵手 [a-z] :从a到z的任意一个字符。

[0-9] :从0到9任意一位数字。

  1. 赶走手牵手 [^A-Z] :除了A到Z的任意一个字符。
  2. 多段并集 [a-e[m-p]] :a到e或者m到p。 例如:"java".matches("ja[a-c[e-g[h-v]]]a")true

(可简写为:[a-em-p])。

  1. 多段交集 [a-e&&[c-p]] :a到e与c到p的交集。

(可简写为[a-e&&c-p])

注:(9)到(14)的中括号[]可以省略,java用\\来表示\,本文中我写双斜杠。

  1. [\\d] :一位数字,等同于[0-9]。
  2. [\\D] :一位非数字。
  3. [\\w] :一个单词字符(包括大小写)(如下划线_)

单词字符包括任何的字母、数字以及下划线。

  1. [\\W] :一个非单词字符(如$)。
  2. [\\s] :空白字符(空格‘ ’,换页‘\f’,换行’\n’,回车’\r’,水平制表符’\t’,垂直制表符’\v’)
  3. [\\S] : 除了空白字符以外的任意一个字符。

量词符(确定量词前面的模式会重复多少次):

  1. _* :_大于等于0次出现,若_为字符串则用括号括起来。
  2. _+ :_大于等于1次出现,若_为字符串则用括号括起来。
  3. _? :_有0或者1次出现,若_为字符串则用括号括起来。
  4. _{n} :_正好出现n次,精确。
  5. _{n,} :_出现大于等于n次。
  6. _{n,m} :_出现次数大于等于n小于等于m。
  7. \\p{P}:表示一个标点字符('!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~')

注:所有量词符都是贪婪的,会尽量取匹配最多次的子字符串,若想使其取匹配最少次的子字符串,则在量词符后打上’?’

以上就是正则表达式的表示规则,下面我们做一道题检验一下:我们平时使用的qq邮箱等账号用正则表达式怎么表示呢?

如:[\\d]+@[\\w]+.c(om|n)

  • 字符串的替换

Java的String类包含replaceAll和replaceFirst方法用于字符串的替换,返回值为替换后的字符串。

其中replaceAll方法替换所有匹配的子字符串;

replaceFirst方法替换第一个匹配的子字符串。

str. replaceAll(第一个参数,第二个参数)  第一个参数是由正则表达式构成的字符串(集),第二个参数是用于替换的字符串,将字符串str中所有符合 正则表达式构成的字符串集 的子字符串 替换成第二个参数的字符串,replaceFirst方法将字符串str中第一个符合 正则表达式构成的字符串(集) 的子字符串 替换成第二个参数的字符串。

  • 字符串的拆分

Java的String类包括的split方法用于字符串的拆分,返回值为字符串数组。

split(regex,limit);

其中regex为正则表达式构成的字符串;limit-1为拆分进行多少次,若limit<=0,则等同于split(regex),即进行最多次。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值