博客
关于我
9.5 正则表达式及字符串的替换与分解
阅读量:323 次
发布时间:2019-03-04

本文共 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}]+”;表示空格,数字和符号组成的正则表达式

 

 

 

转载地址:http://iish.baihongyu.com/

你可能感兴趣的文章
在没实践机会的前提下,如何跨越级别
查看>>
从面试官角度告诉大家如何准备项目方面的描述
查看>>
去创业公司不能有一夜暴富的侥幸,更不能指望掉馅饼
查看>>
架构师入门:搭建基本的Eureka架构(从项目里抽取)
查看>>
Java核心技术及面试指南 流程控制方面的面试题答案
查看>>
程序员如何在百忙中更有效地利用时间,如何不走岔路,不白忙(忙得要有效率,要有收获)
查看>>
MongoDB 快速扫盲贴
查看>>
修复搜狗、360等浏览器不识别SameSite=None 引起的单点登录故障
查看>>
明天要早起,今天不博了。
查看>>
2017/08/21 工作日志
查看>>
EXTJS4.2——10.Tab+Iframe
查看>>
EXTJS4.2——3.1 添加文本框
查看>>
WEB基础——AJAX
查看>>
one + two = 3
查看>>
Kali Day01 --- arpspoof命令进行断网攻击(ARP欺骗)
查看>>
echart关系图平分节点删除时自动平衡问题
查看>>
【Coursera】Internet History 读书笔记
查看>>
《ODAY安全:软件漏洞分析技术》学习心得-----shellcode的一点小小的思考
查看>>
PHP serialize && unserialize Security Risk Research
查看>>
Deformity ASP/ASPX Webshell、Webshell Hidden Learning
查看>>