正则表达式
正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本–百度百科。无论用什么语言编程,在处理字符串的匹配问题上,正则表达式是一个强大的工具。这里不会去介绍正则表达式的语法规则(网上很多,自行搜索即可),而是就一个实际的场景体现Java中如何使用正则表达式。
- Java使用正则表达式对手机号相关的字符串进行操作
- 代码示例(代码注释超详细~)
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexTest{
public static void testphone() {
//手机号正则表达式(未要求字符串为11位,如需要在正则表达式前加入“^”,在正则表达式末尾加入“$”)
String reg = "(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\\d{8}";
String phone = "13393518460rtyerty18293518460rrt";
Pattern p = Pattern.compile(reg); //编译正则表达式
Matcher m = p.matcher(phone); //正则表达式进行字符串匹配
while(m.find()) {
System.out.println(m.start()+" "+m.end()); //输出匹配的字符串的首索引和尾索引(前开后闭)
System.out.println(m.group()); //group()输出匹配的字符串
}
// 注意find()函数使用后索引自动移到下一匹配字符串位置,上面输出匹配子串后故需要重新模式匹配
m = p.matcher(phone); //正则表达式进行字符串匹配
boolean rs1 = m.find(); //find()方法输出是否匹配成功(无需匹配全部字符串)
System.out.println(rs1);
boolean rs2 = m.matches(); //matches()方法输出是否匹配成功(匹配全部字符串)
System.out.println(rs2);
phone=phone.replaceAll(reg,"\\*$0\\*"); // 将匹配到的字符串进行替换,$0表示匹配的字符串自身
System.out.println(phone);
//如果正则表达式有分组,使用"()"表示,则group(i)可以得到分组匹配到的信息,例如号码前三位前缀采用分组,分组得到“133”和“182”两个满足条件的前缀
m = p.matcher(phone);
while(m.find()) {
System.out.println(m.group(1));
}
}
public static void main(String[] args){
testphone();
}
}
- 运行结果:
博客中相关问题欢迎询问探讨,相互学习。QQ:1476154032,以上。