package javaxuexi;
/**
*
* @author zhaocx1
*
*/
/*
* 正则表达式:符合一定规则的表达式。
* 作用:用于专门操作字符串。
* 特点:用一些特定的符号来表示一些代码操作,这样就简化书写。
* 所以学习正则表达式就是在学习一些特殊符号的使用。
* 好处:可以简化对字符串的复杂操作。
* 弊端:符号定义越多,正则越长,阅读型越差。
*
* 具体操作功能:
* 1.匹配:String matches方法。用规则匹配整个字符串,只要有一处不符合规则,就匹配结束,返回false。
* 2.切割:String split();
* 3.替换:String replaceAll();
*
*/
/*
* 对QQ号码进行校验。
* 要求:5-15,0不能开头,只能是数字。
*
* 这种方式,使用了String类中的方法,进行组合完成了需求,但是代码过于复杂。
*/
public class zhengzebiaodashi {
public static void main(String[] args) {
check_ZiMu();
}
public static void checkQQ() {
String qq = "00123456";
String regex = "[1-9]\\b{4,14}";//定义正则表达式
//将定义的内容与正则表达式进行匹配可以判断定义的内容是否是正确的
boolean flag = qq.matches(regex);
if (flag)
System.out.println(qq + ".....si ok");
else
System.out.println(qq + ".......nonono");
}
}
package javaxuexi;
/**
*
* @author zhaocx1
*
*/
public class zhengzeDemo2 {
public static void main(String[] args)
{
//splitDemo();
//splitDemo("zhangsan.lisi.wangwu","\\.");
splitDemo("c:\\abc\\demo.txt","\\\\");
splitDemo("ccgrskkghggnn","(.)\\1+");//按照叠词完成切割。为了可以让规则的结果被重用,
//可以将规则封装成一个组,用()完成,组的出线都有编号。
//从1开始,想要使用已有的组可以通过,\n(n就是组的编号)的形式来获取。
}
public static void splitDemo(String str,String reg){
//String reg=" +";//按照多个空格进行切割。
String[] arr=str.split(reg);
System.out.println(arr.length);
for(String s:arr)
{
System.out.println(s);
}
}
}
package javaxuexi;
/**
*
* @author zhaocx1
*
*/
public class zhengzeDemo3 {
public static void main(String[] args) {
String str = "sjoanghzneghzenhojonkagnbuongo792085y";// 将字符串种的数组替换成#。
replaceAllDemo(str, "\\d{5,}", "#");
String str1="aaaazzzhongshaoonz";//将叠词替换成&。//将重叠的字符换成单个字母。zzzz->z.
//replaceAllDemo(str1,"(.)\\1","&");
replaceAllDemo(str1,"(.)\\1+","$1");
}
public static void replaceAllDemo(String str, String reg, String newStr) {
str = str.replaceAll(reg, newStr);
System.out.println(str);
}
}
package javaxuexi;
/**
*
* @author zhaocx1
*
*/
/*
* 正则表达式的第四个功能。
* 4.获取:将字符串中的符合规则的字串取出。
*
* 操作步骤:
* 1.将正则表达式封装成对象。
* 2.让正则对象和要操作的字符串想关联。
* 3.关联后,获取正则匹配引擎。
* 4.通过引擎对符合正则的字串进行操作,比如取出。
*
*/
import java.util.regex.*;
public class zhengzeGet {
public static void main(String[] args) {
getDemo();
}
public static void getDemo() {
String str = "ming tian jiu yao fang jia le,da jia";
String reg = "\\b[a-z]{4}\\b";
// str="0123456";
// String reg="[1-9]\\d{4,14}";
// 将股则封装成对象。
Pattern p = Pattern.compile(reg);
// 让正则对象和要作用的字符串相关联。获取匹配器对象。
Matcher m = p.matcher(str);
// System.out.println(m.matches());
//其实string类中的matchers方法,用的就是pattern和matcher对象来完成的。
// 只不过被string的方法封装后,用起来较为简单,但是功能却单一。
//boolean b=m.find();//将规则作用到字符串上,并进行符合规则的字串查找。
//System.out.println(b);
//System.out.println(m.group());//用于匹配后结果。
while(m.find())
{
System.out.println(m.group());
System.out.println(m.start()+"......"+m.end());
}
}
}
package javaxuexi;
/**
*
* @author zhaocx1
*
*/
/*
* 需求:
* 将谢列字符串专程:我要学编程。
*
* 到底用四种功能中的哪一个呢?或者哪几个呢?
* 思路方式:
* 1.如果只想知道该字符是否对是错,使用匹配。
* 2.想要将已有的字符串编程另一个字符串,替换。
* 3.想要按照自定的方式将字符串编程多个字符喜欢,切割,获取规则以外的字串。
* 4.想要拿到符合需求的字符串子串,获取,祸福符合规则的子串。
*
*/
public class zhengzelianxi {
public static void main(String[] args)
{
test_1();
}
public static void test_1()
{
String str="我我。。。我我。。我要。。。要要。。要要。。学学学。。学学。。。编编。。程程。。编程";
/*
* 将已有字符串变成另一个字符串,使用替换功能。
* 1.可以先将。去掉。
* 2.再将多个重复的内容编程单个内容。
*/
str =str.replaceAll("\\。+","");
System.out.println(str);
str=str.replaceAll("(.)\\1+","$1");
System.out.println(str);
}
}