/*
正则表达式:符合一定规则的表达式
作用:专门用于操作字符串
特点:用一些特定的符号来表示一些代码操作,这样可以简化书写
好处:可以简化对字符串的复杂操作
其实学习正则表示式就是在学习一些特殊符号的使用
具体操作功能:1.匹配:String matches方法,此方法匹配整个字符串
2.切割:String split方法
*/
class Regex
{
public static void main(String[] args)
{
//匹配
//checkQQ_1();
//checkTel();
/*
//切割
splitDemo("asvxs asdsa asas dsvdsv ds"," +"); //以一个或多个空格切割
splitDemo("asdsad.asdsad.asdsadeg.oiji","\\."); //以符号"."切割,这个符号在正则表达式中是特殊符号,
//不能直接使用,必须用转义字符"\",但是使用一个有
//歧义,所以还要再加一个"\"
splitDemo("c:\\windows\\system32\\123.jpg","\\\\"); //此处直接使用"\\"分隔因"\"特性会有歧义,所以
//各用一个"\"转义达到目的
//下面使用叠词完成切割,为了可以让规则的结果被重用,可以将规则封装为一个组,用()完成,组的出现都有编号
//从1开始,想要使用已有的组可以通过\n(n为组的编号)的形式来获取,组的编号及数目从左向右计数即可,此处
//教学视频详见25天第3讲
splitDemo("wefsdffmffffiniooopowwklj","(.)\\1+");
*/
//替换
String str ="asx161a648848asx31684684a1sx741xas2168464asxas";
replaceAll(str,"\\d{5,}","#"); //将字符串中含有5个以上数字的部分替换为#
String str1 ="wefsdffmffffiniooopowwklj"; //将字符串中的叠词替换为*
replaceAll(str1,"(.)\\1+","*"); //此处的1与组封装在一个字符串内
String str2 ="wefsdffmffffiniooopowwklj"; //将字符串中的叠词替换为相应叠词的单个字符
replaceAll(str2,"(.)\\1+","$1"); //此处使用特殊符号"$",代表引用字符串中的组,后边的1代表前边的1组,
//若无数字代表默认整个字符串为组,通过这个符号可实现上边的要求,注
//意:此处的组的编号与组分离被封装在另一个字符串中
}
//替换练习
public static void replaceAll(String str, String regex, String newstr)
{
str = str.replaceAll(regex,newstr);
System.out.println(str);
}
//切割练习:
public static void splitDemo(String str, String regex)
{
String[] arr = str.split(regex);
for(String s : arr)
{
System.out.println(s);
}
}
//匹配练习:对电话号码进行校验,要求,只能是13xxx、15xxx、18xxx号段
public static void checkTel()
{
String tel = "13598758964";
String telregex = "1[358]\\d{9}"; //此处不能直接使用正则表达式的符号"\d",必须增加一个"\",因为前
//者中的"\"会将"d"转义,使得其成为两个符号,从而失去作用
boolean flag = tel.matches(telregex);
if(flag)
System.out.println("手机号正确:"+tel);
else
System.out.println("手机号有误");
}
/*
练习:对qq号码进行校验,要求:不能以0开头,5~15位的数字
*/
public static void checkQQ_1() //使用正则表达式进行校验
{
String qq = "34564161561";
String regex = "[1-9][0-9]{4,14}";
boolean flag = qq.matches(regex);
if(flag)
System.out.println("qq号正确:"+qq);
else
System.out.println("qq号有误");
}
public static void checkQQ_2() //多重判断组合
{
String qq = "34564161561";
if (qq.length()>=5&&qq.length()<=15)
{
if (!qq.startsWith("0"))
{
boolean flag = true;
try
{
long l = Long.parseLong(qq);
System.out.println("qq号正确:"+qq);
}
catch (NumberFormatException e)
{
System.out.println("qq号中出现非法字符");
}
}
else
System.out.println("qq号码不能以0开头");
}
else
System.out.println("长度错误");
}
}
|
|