目录
正则表达式(regular expression,简写regex)是一个字符串用来匹配字符串集合的模式。可以用正则表达式来匹配替换和拆分字符。
“java”.matches(“java”);
这与equals方法(“java”.equals(“java”);)很类似但是用法更全面,功能更强大。例如:可以使用(.*)代表任意长度的字符串。
注:还有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方法用于替换和拆分字符串。
如:System.out.println(“java java java”.raplaceall(“”v\\w”,”wi”));
会显示jawi jawi jawi
若将改为replacefirst则会变为jawi java java
拆分字符有两个重载:
将一个字符串拆分成子字符串。
例:string[] tokens = “JavalHTML2perl”.split(“\\d”);
将字符串“JavalHTML2perl”拆分为Java,HTML以及Perl并且保存再tokens[0],tokens[1],tokens[3]中。
由limit参数确定匹配几次(当limit=0时,相当于split(regex)
注:{默认情况下,所有量词都是贪婪的,即会尽可能地多次匹配,可以通过在后面加“?”来将其变为惰性的,使其匹配次数尽可能少。
例:
System.out.println(“jaaaavaa”.replaceFirst(“a+”,”R”));
显示:JRvaa
System.out.println(“jaaaavaa”.replaceFirst(“a+?”,”R”));
显示:JRaaavaa
}
在Java.util.regex包下使用。
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。
Mathcer.start()/ Matcher.end()/ Matcher.group()
start()返回匹配到的子字符串在字符串中的索引位置.
end()返回匹配到的子字符串的最后一个字符在字符串中的索引位置.
group()返回匹配到的子字符串