正则表达式及小例子文档格式.docx

上传人:b****2 文档编号:699289 上传时间:2023-04-29 格式:DOCX 页数:30 大小:26.51KB
下载 相关 举报
正则表达式及小例子文档格式.docx_第1页
第1页 / 共30页
正则表达式及小例子文档格式.docx_第2页
第2页 / 共30页
正则表达式及小例子文档格式.docx_第3页
第3页 / 共30页
正则表达式及小例子文档格式.docx_第4页
第4页 / 共30页
正则表达式及小例子文档格式.docx_第5页
第5页 / 共30页
正则表达式及小例子文档格式.docx_第6页
第6页 / 共30页
正则表达式及小例子文档格式.docx_第7页
第7页 / 共30页
正则表达式及小例子文档格式.docx_第8页
第8页 / 共30页
正则表达式及小例子文档格式.docx_第9页
第9页 / 共30页
正则表达式及小例子文档格式.docx_第10页
第10页 / 共30页
正则表达式及小例子文档格式.docx_第11页
第11页 / 共30页
正则表达式及小例子文档格式.docx_第12页
第12页 / 共30页
正则表达式及小例子文档格式.docx_第13页
第13页 / 共30页
正则表达式及小例子文档格式.docx_第14页
第14页 / 共30页
正则表达式及小例子文档格式.docx_第15页
第15页 / 共30页
正则表达式及小例子文档格式.docx_第16页
第16页 / 共30页
正则表达式及小例子文档格式.docx_第17页
第17页 / 共30页
正则表达式及小例子文档格式.docx_第18页
第18页 / 共30页
正则表达式及小例子文档格式.docx_第19页
第19页 / 共30页
正则表达式及小例子文档格式.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

正则表达式及小例子文档格式.docx

《正则表达式及小例子文档格式.docx》由会员分享,可在线阅读,更多相关《正则表达式及小例子文档格式.docx(30页珍藏版)》请在冰点文库上搜索。

正则表达式及小例子文档格式.docx

\d数字

\D非数字

\w单字字符(0-9,A-Z,a-z)

\W非单字字符

\s空白(空格符,换行符,回车符,制表符)

\S非空白

[]由方括号内的一个字符列表创建的自定义字符类匹配任何单个字符

下面的字符将用于控制将一个子模式应用到匹配次数的过程.

?

重复前面的子模式0次到一次

*重复前面的子模式0次或多次

+重复前面的子模式一次到多次

 

匹配中文字符的正则表达式:

[\u4e00-\u9fa5]

匹配双字节字符(包括汉字在内):

[^\x00-\xff]

应用:

计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

String.prototype.len=function(){returnthis.replace([^\x00-\xff]/g,"

aa"

).length;

}

匹配空行的正则表达式:

\n[\s|]*\r

匹配HTML标记的正则表达式:

/<

(.*)>

.*<

\/\1>

|<

(.*)\/>

/

匹配首尾空格的正则表达式:

(^\s*)|(\s*$)

以下是实例部分:

实例一:

正则式是最简单的能准确匹配一个给定String的模式,模式与要匹配的文本是等价的.静态的Pattern.matches方法用于比较一个String是否匹配一个给定模式.例程如下:

Stringdata="

java"

;

booleanresult=Pattern.matches("

data);

输出:

true

实例二:

String[]dataArr={"

moon"

"

mon"

mono"

};

StringpatternStr="

m(o+)n"

booleanresult=false;

for(Stringstr:

dataArr){

result=Pattern.matches(patternStr,str);

if(result){

System.out.println("

字符串"

+str+"

匹配模式"

+patternStr+"

成功"

);

else{

失败"

}

字符串moon匹配模式m(o+)n成功

字符串mon匹配模式m(o+)n成功

字符串mono匹配模式m(o+)n失败

模式是”m(o+)n”,它表示mn中间的o可以重复一次或多次,因此moon,mon,mooon能匹配成功,而mono在n后多了一个o,和模式匹配不上.

注:

+表示一次或多次;

表示0次或一次;

*表示0次或多次.

实例三:

ban"

ben"

bin"

bon"

"

bun"

"

byn"

baen"

};

b[aeiou]n"

booleanresult=false;

result=Pattern.matches(patternStr,str);

else{

字符串ban匹配模式b[aeiou]n成功

字符串ben匹配模式b[aeiou]n成功

字符串bin匹配模式b[aeiou]n成功

字符串bon匹配模式b[aeiou]n成功

字符串bun匹配模式b[aeiou]n成功

字符串byn匹配模式b[aeiou]n失败

字符串baen匹配模式b[aeiou]n失败

方括号中只允许的单个字符,模式“b[aeiou]n”指定,只有以b开头,n结尾,中间是a,e,i,o,u中任意一个的才能匹配上,所以数组的前五个可以匹配,后两个元素无法匹配。

方括号[]表示只有其中指定的字符才能匹配.

实例四:

been"

bean"

boon"

buin"

bynn"

StringpatternStr="

b(ee|ea|oo)n"

booleanresult=Pattern.matches(patternStr,str);

字符串been匹配模式b(ee|ea|oo)n成功

字符串bean匹配模式b(ee|ea|oo)n成功

字符串boon匹配模式b(ee|ea|oo)n成功

字符串buin匹配模式b(ee|ea|oo)n失败

字符串bynn匹配模式b(ee|ea|oo)n失败

如果需要匹配多个字符,那么[]就不能用上了,这里我们可以用()加上|来代替,()表示一组,|表示或的关系,模式b(ee|ea|oo)n就能匹配been,bean,boon等,因此前三个能匹配上,而后两个不能.

实例五:

1"

10"

101"

1010"

100+"

100d"

\\d+"

booleanresult=Pattern.matches(patternStr,str);

}else{

字符串1匹配模式\d+成功

字符串10匹配模式\d+成功

字符串101匹配模式\d+成功

字符串1010匹配模式\d+成功

字符串100+匹配模式\d+失败

字符串100d匹配模式\d+失败

注:

d表示字母d,\d表示的是数字,不是字母d,前一个'

\'

是转义字符,用来转义第二个'

'

\d+'

表示一个或一个以上数字,所以"

就表示一位或多位数字,因此前四个能匹配上,最后一个因为+号是非数字字符而匹配不上.

实例六:

a100"

b20"

c30"

df10000"

gh0t"

\\w+\\d+"

for(Stringstr:

 

if(result){

System.out.println("

}

字符串a100匹配模式\w+\d+成功

字符串b20匹配模式\w+\d+成功

字符串c30匹配模式\w+\d+成功

字符串df10000匹配模式\w+\d+成功

字符串gh0t匹配模式\w+\d+失败

模式'

\w+'

表示一个或一个以上字母,'

表示一个或一个以上数字,‍'

\w+\d+'

表示的是以多个单字字符开头,多个数字结尾的字符串,多个两个'

是转义字符,用来转义后面字符'

因此前四个能匹配上,最后一个因为数字后还含有单字字符而不能匹配.

实例七:

Stringstr="

薪水,职位姓名;

年龄性别"

String[]dataArr=str.split("

[,\\s;

]"

for(StringstrTmp:

System.out.println(strTmp);

等同于:

Patternp=Ppile("

String[]dataArr=p.split(str);

for(StringstrTmp:

System.out.println(strTmp);

输出结果都是:

薪水

职位

姓名

年龄

性别

String类的split函数支持正则表达式,上例中模式能匹配”,”,单个空格,”;

”中的一个,split函数能把它们中任意一个当作分隔符,将一个字符串劈

分成字符串数组.

实例八:

2007年12月11日"

[年月日]"

Pattern是一个正则表达式经编译后的表现模式,它的split方法能有效劈分字符串.

注意其和String.split()使用上的不同.

实例九:

10元1000人民币10000元100000RMB"

str=str.replaceAll("

(\\d+)(元|人民币|RMB)"

$1¥"

System.out.println(str);

输出结果:

10¥1000¥10000¥100000¥

实例九-1:

200$2"

200元200人民币200元200RMB

上例中,模式“(\\d+)(元|人民币|RMB)”按括号分成了两组,第一组\\d+匹配单个或多个数字,第二组匹配元,人民币,RMB中的任意一个,替换部分$1表

示第一个组匹配的部分不变,其余组替换成¥.

替换后的str为¥10¥1000¥10000¥100000

实例十:

Pattern.CASE_INSENSITIVE);

//用Pattern类的matcher()方法生成一个Matcher对象

Matcherm=p.matcher("

moonmooonMonmooooonMooon"

StringBuffersb=newStringBuffer();

//使用find()方法查找第一个匹配的对象

booleanresult=m.find();

//使用循环找出模式匹配的内容替换之,再将内容加到sb里

while(result){

m.appendReplacement(sb,"

result=m.find();

//最后调用appendTail()方法将最后一次匹配后的剩余字符串加到sb里;

m.appendTail(sb);

替换后内容是"

+sb.toString());

实例10-2:

//Pattern.CASE_INSENSITIVE不区分大小写的匹配

Patternp=Ppile("

Pattern.CASE_INSENSITIVE);

Matcherm=p.matcher("

javakj34kkkkiiiJAVAip34"

System.out.println(m.find());

输出结果:

true

false

实例10-3:

javaJavaJAVaJaVaIloveJAVAyouhateJavaafasdfasdf"

StringBufferbuf=newStringBuffer();

inti=0;

while(m.find()){

i++;

if(i%2==0){

m.appendReplacement(buf,"

}else{

JAVA"

}

System.out.println(buf);

m.appendTail(buf);

//添加尾巴

JAVAjavaJAVAjavaIloveJAVAyouhatejava

JAVAjavaJAVAjavaIloveJAVAyouhatejavaafasdfasdf

10-4实例:

j\\w\\w\\s"

javJavaJAVJaVaIloveJAVAJashateJavaafasdfasdf"

while(m.find()){

i++;

if(i%2==0){

m.appendReplacement(buf,"

good"

}else{

GOOD"

m.appendTail(buf);

System.out.println(buf);

GOODJavagoodJaVaIloveJAVAGOODhateJavaafasdfasdf

实例十一:

除了用+表示一次或多次,*表示0次或多次,?

表示0次或一次外,还可以用{}来指定精确指定出现的次数,X{2,5}表示X最少出现2次,最多出现5次;

X{2,}表

示X最少出现2次,多则不限;

X{5}表示X只精确的出现5次.

例程:

google"

gooogle"

gooooogle"

goooooogle"

ggle"

StringpatternStr="

g(o{2,5})gle"

+str+"

+patternStr+"

}else{

字符串google匹配模式g(o{2,5})gle成功

字符串gooogle匹配模式g(o{2,5})gle成功

字符串gooooogle匹配模式g(o{2,5})gle成功

字符串goooooogle匹配模式g(o{2,5})gle失败

字符串ggle匹配模式g(o{2,5})gle失败

实例十二:

-表示从..到…,如[a-e]等同于[abcde]

Tan"

Tbn"

Tcn"

Ton"

Twn"

Stringregex="

T[a-c]n"

booleanresult=Pattern.matches(regex,str);

+regex+"

实例十三:

不区分大小写匹配.

正则表达式默认都是区分大小写的,使用了Pattern.CASE_INSENSITIVE则不对大小写进行区分.

ab"

Patternpattern=Ppile(patternStr,Pattern.CASE_INSENSITIVE);

String[]dataArr={"

Ab"

AB"

Matchermatcher=pattern.matcher(str);

if(matcher.find()){

实例十四:

使用正则表达式劈分字符串.

注意这里要把复杂的模式写在前面,否则简单模式会先匹配上.

Stringinput="

职务=GM薪水=50000,姓名=职业经理人;

性别=男年龄=45"

(\\s*,\\s*)|(\\s*;

\\s*)|(

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2