9.5 正则表达式及字符串的替换与分解
发布日期:2021-05-07 06:40:05 浏览次数:15 分类:精选文章

本文共 2000 字,大约阅读时间需要 6 分钟。

  • 正则表达式
  • 字符串对象调用
  • 常用的元字符及其意义
  • 元字符
  • 限定修饰符
  • 字符串的替换
  • 字符串的分解(重点)

 

 

(1)正则表达式

正则表达式是含有一些特殊意义字符的字符串,这些特殊字符称为正则表达式中的元字符

比如“\\dhello”中的\\d就是有特殊意义的元字符,代表0到9数字中的任何一个。字符串9hello,1hello都是和正则表达式\\dhello匹配的字符串

 

(2)字符串对象调用

  • public boolean maches(String regex)方法

可以判断当前字符串对象是否和参数regex指定的正则表达式匹配

 

(3)常用的元字符及其意义

 

(4)在正则表达式中,可以用方括号括起若干个字符来表示一个元字符,该元字符代表方括号中的任何一个字符。

比如regex=”[159]ABC”,那么1ABC,5ABC,9ABC都是和正则表达式regex匹配的字符串

类似的还有

[abc]:代表a,b,c中的任何一个[^abc]:代表a,b,c以外的任何字符[a-zA-Z]:代表英文字母中的任何一个[a-d]:代表a到d中的任何一个另外,中括号里允许嵌套中括号,可以进行并交差运算。[a-d[m-p]]:代表a-d,或m-p中的任何字符(并)[a-z&&[def]]:代表d,e或者f中的任何一个(交)[a-f&&[^bc]]:代表a,d,e,f(差)

注意:由于“.”代表任何一个字符,所以在正则表达式如果想使用普通意义的点字符,必须使用[.]

 

 

(5)在正则表达式中可以使用限定修饰符。

比如对于限定修饰符?,如果X代表正则表达式中的一个元字符或普通字符,那么X?表示X出现0次或1次。

例如:regex=”hello[2468]?”;那么,“hello”,“hello2”,“hello4”,“hello6”,“hello8”都是与正则表达式匹配的字符串

类似的还有

X?-------------------------------------------X出现0次或1次X*--------------------------------------------X出现0次或多次X+---------------------------------------------X出现1次或多次X{n}--------------------------------------------X恰好出现n次X{n,}-------------------------------------------X至少出现n次X{n,m}----------------------------------------X出现n次至m次例如:regex=“@\\w{4}”,就是说这个\\w恰好出现四次那么“@abcd”,“@girl”,“@moon”都是与正则表达式regex匹配的字符串之一

 

 

(6)字符串的替换

JDK1.4后,字符串对象调用

  • public String replaceAll(String regex,String replacement)

快速记忆:(指定的,替换的),还有注意是替换符合的所有,不只是一个,不懂看例子,12不是替换成你好你好,而是你好

方法返回一个字符串,该字符串是当前字符串中所有和参数regex指定的正则表达式匹配的字符串被参数replacement指定的字符串替换后的字符串

例如:String r=”12hello567”.replaceAll(“\\d+”,”你好”);那么,r就是“你好hello你好”

注意:

(1)当前字符串调用replaceAll()方法返回一个字符串,但不改变当前字符串。

(2)如果想剔除一个字符串的非字符,例如:

String a=”12r”;replaceAll(“\\D”,””);

 

 

 

(7)字符串的分解(重点)

JDK1.4后,String提供了一个方法

  • public String split(String regex)

字符串调用该方法时,使用参数指定的正则表达式regex作为分隔标记分解出其中的单词,并将分解出的单词存放在字符串数组中。

例如,对于字符串:str=”1931年09月18日晚,日本发动侵华战争,请记住这个日子”;如果准备分解出全部由数字字符组成的单词,就必须用非数字字符串作为分隔标记,因此,可以使用正则表达式:String regex=“\\D+”;作为分隔标记分解出str中的单词String digitWord[]=str.split(regex);那么,digitWord[0],digitWord[1],digitWord[2]分别是“1931”,“09”,“18”

 

附加:

String regex=”[\\s\\d\\p{punct}]+”;表示空格,数字和符号组成的正则表达式

 

 

 

上一篇:9.6 StringBuffer类
下一篇:9.4 字符串与字符,字节数组

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2025年04月09日 20时05分45秒