正则表达式

目录

正则表达式 1

一.概念 1

二.匹配字符串 1

1.可以用matches来匹配字符串: 1

2.常用的正则表达式 1

三.替换和拆分字符 2

1.替换 2

a.replaceAll: 2

b.replaceFirst: 2

2.拆分字符 2

a.split(regex) 2

b.split(regex,limit) 2

四.Pattern类和matcher类 3

1.Pattern类: 3

2.Matcher()类 4

正则表达式

一.概念

正则表达式(regular expression,简写regex)是一个字符串用来匹配字符串集合的模式。可以用正则表达式来匹配替换和拆分字符。

二.匹配字符串

1.可以用matches来匹配字符串:

“java”.matches(“java”);

这与equals方法(“java”.equals(“java”);)很类似但是用法更全面,功能更强大。例如:可以使用(.*)代表任意长度的字符串。

2.常用的正则表达式

 

注:还有p{,n}正好出现至少n次模式p

可利用以下语句对其进行验证{

/*该语句仅对[^a-b] 类型进行了验证*/

String s = new String("javae");

String example="java[^a-c]";

System.out.println(s.matches(example));

}

三.替换和拆分字符

String类也包含replaceall、replacefirst和split方法用于替换和拆分字符串。

1.替换

a.replaceAll:

如:System.out.println(java java java.raplaceall(“”v\\w,wi));

会显示jawi jawi jawi

b.replaceFirst:

若将改为replacefirst则会变为jawi java java

2.拆分字符

拆分字符有两个重载:

a.split(regex)

将一个字符串拆分成子字符串。

例:string[] tokens = JavalHTML2perl.split(\\d);

将字符串“JavalHTML2perl”拆分为Java,HTML以及Perl并且保存再tokens[0],tokens[1],tokens[3]中。

b.split(regex,limit)

由limit参数确定匹配几次(当limit=0时,相当于split(regex)

注:{默认情况下,所有量词都是贪婪的,即会尽可能地多次匹配,可以通过在后面加“?”来将其变为惰性的,使其匹配次数尽可能少。

例:

System.out.println(jaaaavaa.replaceFirst(a+,R));

显示:JRvaa

System.out.println(jaaaavaa.replaceFirst(a+?,R));

显示:JRaaavaa

}

四.Pattern类和matcher类

在Java.util.regex包下使用。

1.Pattern类:

Pattern类用于创建一个正则表达式{

Pattern p=Pattern.compile("\\w+");

p.pattern();//返回 \w+

}

pattern() 返回正则表达式的字符串形式,其实就是返回Pattern.complile(String regex)的regex参数

a.Patter.split(CharSequence input)

此方法用于分隔字符串,返回一个String[]。{

Pattern p=Pattern.compile("\\d+");

String[] str=p.split("我的QQ是:456456我的电话是:0532214我的邮箱是:aaa@aaa.com");

结果:str[0]="我的QQ是:" str[1]="我的电话是:" str[2]="我的邮箱是:aaa@aaa.com"

}

b.Patttern.matcher(String regex,CharSequence input)

此方法用于快速匹配字符串且只匹配一次,并匹配全部字符串。{

Pattern.matches("\\d+","2223");//返回true

Pattern.matches("\\d+","2223aa");//返回false,需要匹配到所有字符串才能返回true,这里aa不能匹配到

Pattern.matches("\\d+","22bb23");//返回false,需要匹配到所有字符串才能返回true,这里bb不能匹配

}

c.Pattern.matcher(CharSequence input):

Matcher提供对正则表达式的分组功能,以及多次匹配。{

Pattern p=Pattern.compile("\\d+");

Matcher m=p.matcher("22bb23");

m.pattern();//返回p 也就是返回该Matcher对象是由哪个Pattern对象的创建的

}

d.Matcher.matches()/ Matcher.lookingAt()/ Matcher.find()

该三种方法都只返回boolean类型,匹配到返回true,否则false

Matches()对整个字符串进行匹配,全匹配才返回true。

e.Find():

对字符串进行匹配,在任何位置匹配到就返回true。

2.Matcher()类

Mathcer.start()/ Matcher.end()/ Matcher.group()

start()返回匹配到的子字符串在字符串中的索引位置.

end()返回匹配到的子字符串的最后一个字符在字符串中的索引位置.

group()返回匹配到的子字符串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值