正则表达式
2014-02-15 16:13
225 查看
黑马程序员_正则表达式
----------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流!
----------------
正则表达式,即符合一定规则的表达式,用于专门操作字符串。Java在J2SE1.4之后开始支持正则表达式,您可以在API文件的java.util.regex.Pattern类中找到支持的正则表达式相关信息。可以将正则表达式用于字符串的对比、取代、分离等动作。
正则表达式中一般有四种操作:
1.匹配 String matches方法
2.切割
3.替换replace,replaceAll复杂,里面包含正则表达式
4.获取
字符对比符号:
. 符合任一字符
\d 符合0----9任一个数字字符
\D 符合0----9以外的字符
\s 符合\t,\n,\x08,\f,\r等空格符
\w 数字或字符都符合
\W 除数字与字母外都符合
切割范例:
public class Regular{
public static void main(String []args){
//定义字符串text
String text=”abcdebcadxbc”;
//使用split()方法对字符串text进行切割
String []arr=text.split(“.bc”);
//运用for循环进行遍历
for(String ss:arr)
{
System.out.print(ss+” ”);
}
System.out.println();
//再次进行切割
arr=text.split(“..cd”);
//for循环遍历
for(String ss:arr)
{
System.out.print(ss+” ”);
}
}
}
结果:
d ad
Ebcadxbc
字符类范例
[abc] 符合a/b/c
[^abc] 符合a/b/c之外的字符
[a-zA-Z] 符合a-z或A-Z的字符
[a-d[m-p]] 符合a-d或者m-p
matches实例:
public class test5 {
public static void main(String[]args)
{
Demo();
}
public static void Demo()
{
//定义字符串qq
String qq="18771097257";
//定义规则reg
String reg="[1-9][358]\\d+";
//进行匹配
System.out.print(qq.matches(reg));
}
}
结果:true
贪婪量词范例
X? X出现一次或完全没有
X* X出现0次或多次
X+ X出现一次或多多次
X{n} X出现n次
X{n,} X出现至少n次
X{n,m} X至少出现n次,最多出现m次
当字符串中出现叠词,可表示为(.)\\1,即将要重复的词封装为一组,用括号括起
替换示例:
public class test4 {
public static void main(String[]args)
{
Demo();
}
public static void Demo()
{
//定义字符串qq
String qq="11223344aa55ff";
//定义表达式
String reg="(\\w)\\1";
//进行替换
String s=qq.replaceAll(reg, "$1");
System.out.println(s);
}
}
结果:1234a5f
String类中的matches方法,用的就是Pattern和Matcher对象来完成.如果想要将正则表达式视为一个对象来重复使用,可以使用Pattern的静态方法compile()进行编译。Compile()方法会返回一个Pattern的实例,这个实例代表正则表达式,之后可以重复使用Pattern实例的matcher()方法来返回一个Matcher实例。
实例:
import java.util.regex.*;
public class test6 {
public static void main(String[]args)
{
String phone1="0913-100581\n"+"0939-234561\n";
//将规则封装成对象
Pattern pattern=Pattern.compile(".*0939-\\d{6}");
//让正则对象和要作用的字符串相关联,获取匹配器对象
Matcher matcher=pattern.matcher(phone1);
while(matcher.find())//将规则作用到字符串中,并进行符合规则的子串查找
{
System.out.println(matcher.group());//用于获取匹配后的结果
}
String phone2="0213-456738\n"+"0939-123456\n";
matcher=pattern.matcher(phone2);
while(matcher.find())
{
System.out.print(matcher.group());
}
}
}
结果:
0939-234561
0939-123456
----------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流!
----------------
正则表达式,即符合一定规则的表达式,用于专门操作字符串。Java在J2SE1.4之后开始支持正则表达式,您可以在API文件的java.util.regex.Pattern类中找到支持的正则表达式相关信息。可以将正则表达式用于字符串的对比、取代、分离等动作。
正则表达式中一般有四种操作:
1.匹配 String matches方法
2.切割
3.替换replace,replaceAll复杂,里面包含正则表达式
4.获取
字符对比符号:
. 符合任一字符
\d 符合0----9任一个数字字符
\D 符合0----9以外的字符
\s 符合\t,\n,\x08,\f,\r等空格符
\w 数字或字符都符合
\W 除数字与字母外都符合
切割范例:
public class Regular{
public static void main(String []args){
//定义字符串text
String text=”abcdebcadxbc”;
//使用split()方法对字符串text进行切割
String []arr=text.split(“.bc”);
//运用for循环进行遍历
for(String ss:arr)
{
System.out.print(ss+” ”);
}
System.out.println();
//再次进行切割
arr=text.split(“..cd”);
//for循环遍历
for(String ss:arr)
{
System.out.print(ss+” ”);
}
}
}
结果:
d ad
Ebcadxbc
字符类范例
[abc] 符合a/b/c
[^abc] 符合a/b/c之外的字符
[a-zA-Z] 符合a-z或A-Z的字符
[a-d[m-p]] 符合a-d或者m-p
matches实例:
public class test5 {
public static void main(String[]args)
{
Demo();
}
public static void Demo()
{
//定义字符串qq
String qq="18771097257";
//定义规则reg
String reg="[1-9][358]\\d+";
//进行匹配
System.out.print(qq.matches(reg));
}
}
结果:true
贪婪量词范例
X? X出现一次或完全没有
X* X出现0次或多次
X+ X出现一次或多多次
X{n} X出现n次
X{n,} X出现至少n次
X{n,m} X至少出现n次,最多出现m次
当字符串中出现叠词,可表示为(.)\\1,即将要重复的词封装为一组,用括号括起
替换示例:
public class test4 {
public static void main(String[]args)
{
Demo();
}
public static void Demo()
{
//定义字符串qq
String qq="11223344aa55ff";
//定义表达式
String reg="(\\w)\\1";
//进行替换
String s=qq.replaceAll(reg, "$1");
System.out.println(s);
}
}
结果:1234a5f
String类中的matches方法,用的就是Pattern和Matcher对象来完成.如果想要将正则表达式视为一个对象来重复使用,可以使用Pattern的静态方法compile()进行编译。Compile()方法会返回一个Pattern的实例,这个实例代表正则表达式,之后可以重复使用Pattern实例的matcher()方法来返回一个Matcher实例。
实例:
import java.util.regex.*;
public class test6 {
public static void main(String[]args)
{
String phone1="0913-100581\n"+"0939-234561\n";
//将规则封装成对象
Pattern pattern=Pattern.compile(".*0939-\\d{6}");
//让正则对象和要作用的字符串相关联,获取匹配器对象
Matcher matcher=pattern.matcher(phone1);
while(matcher.find())//将规则作用到字符串中,并进行符合规则的子串查找
{
System.out.println(matcher.group());//用于获取匹配后的结果
}
String phone2="0213-456738\n"+"0939-123456\n";
matcher=pattern.matcher(phone2);
while(matcher.find())
{
System.out.print(matcher.group());
}
}
}
结果:
0939-234561
0939-123456