------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
正则表达式
通常用于程序设计过程中,对输入数据的格式进行检查,如果匹配正则表达式则数据格式正确,否则格式错误。正则表达式就是用一些特殊符号来表示代码操作,简化对字符串的复杂操作,但是当表达式符号定义的越多,就越难理解,可读性变差。
关于正则表达式的特殊符号和限定符描述以及更多信息可以上网查找相关资料。
下面是三个包含正则表达式的String类方法:
- 判断输入的字符串是否符合正则表达式的方法
boolean matches(String regex)
其中regex: 指定的正则表达式,返回值为boolean类型,若匹配则结果为true
- 根据指定的正则表达式拆分字符串
String[] split(String regex)
返回值是String类型数组
- 使用给定的字符串替换某个字符串中所有匹配正则表达式的子字符串
String replaceAll(String regex, String replacement)
replace为替换匹配正则表达式的字符串
字符串匹配实例:
boolean IsQQ(){
String qq = "108949876";
String regex = "[1-9][0-9]{4,15}"; //qq号正则表达式
boolean b = qq.matches(regex); //判断这串号码是否匹配正则表达式
return b; //返回true
}
字符串拆分实例:
//定义按一定规则分隔数组的函数splitDemo,str:需要匹配的字符串;regex:正则表达式(匹配规则)
splitDemo(String str,String regex){
//按正则表达式把字符串分隔,存入数组
String[] st = str.split(regex);
//for循环遍历数组
for(String string: st){
System.out.println(string);
}
}
//调用函数,按照叠词完成切割,此处用到了组的概念,是为了让规则能够重用,把规则用括号括起来,
//并且组的编号从1开始,下面正则表达式的以上就是任意字符为组编号为1出现1次以上
splitDemo("abaabsdfee1223sdfd", "(.)\\1+");
字符串替换实例:
public static void ipSort(){
String ip = "192.168.1.254 102.55.33.1 5.6.8.99 33.44.99.7";
//给匹配到的整数前面补两个0
ip = ip.replaceAll("(\\d+)", "00$1");
//用组1匹配到的字符串替换符合规则的字符串
ip = ip.replaceAll("0*(\\d{3})", "$1");
String[] str = ip.split(" ");
//把字符串数组添加到TreeSet集合中,实现排序
TreeSet<String> ts = new TreeSet<String>();
for(String st : str){
ts.add(st);
}
//最后把零去掉输出排序后的IP
for(String st1: ts){
System.out.println(st1.replaceAll("0*(\\d+)", "$1"));
}
}
字符串获取实例:
将字符串中的符合规则的子串取出。
getDemo(){
String str = "what is your dream, how do you work out it";
System.out.println(str);
String reg = "\\b[a-z]{4}\\b";
//将规则封装成对象
Pattern p = Pattern.compile(reg);
//让正则对象和要作用的字符串通过匹配器关联。获取匹配器对象
Matcher m = p.matcher(str);
while(m.find()){ //m.found()结果为真是,表示匹配到
System.out.println(m.group()); //用于获取匹配后的结果。
}
}