java零基础知识回顾(正则表达式)

来源:互联网 发布:银河证券手机交易软件 编辑:程序博客网 时间:2024/06/05 20:19
java零基础知识回顾(正则表达式)


下面是正则表达式的随堂笔记。




正则表达式:符合一定规则的表达式。作用是用于专门操作字符串,可以简化对字符串的复杂操作。


特点:用一些特定的符号来表示一些代码操作,这样就可以简化书写。
好处:可以简化对字符串的复杂操作。
弊端:符号定义越多,正则越长,阅读性越差。
总结:到底用四种功能中的哪个呢?


思路:


1,如果只想知道该字符是对是错,使用匹配。
2,想要将已有的字符串变成另一个字符串,使用替换功能。
3,想要按照自定的方式将字符串变成多个字符串,用切割,获取规则以外的字符。
4,想要拿到符合要求的字符串字串,用获取,获取符合规则的字串。
 
正则表达式的操作功能:


1.匹配:
String Matches()




public static void checkTel()  
{  
    String Tel = "13592235644";   
    String reg = "1[358]\\d{3-9}";  
    System.out.println(Tel.matches(reg));  
}  


2.切割:
String split()


public static void splitDemo(String str,String teg)  
{  
    String[] arr = str.split(teg);  
    for(String s : arr)  
    {  
        System.out.println(s);  
    }  
}  
  
class RegexDomo  
{  
    public static void main(String[] args)   
    {  
        splitDemo("zhangsan,lisi,wangwu",",");  
        splitDemo("zhangsan   lisi  wangwu"," +");  
        //+表示出现一次或多次。  
        splitDemo("c:\\abc\\a.txt","\\\\");  
        //转义字符  
        splitDemo("erkktyqqquizzzzzo","(.)\\1+");  
        //按照叠词切割,就是后一个和前一个是一样的。  
        /*       
        为了让规则的结果可以重用,可以将规则用()封装成组,组都有编号。 
        从1开始,想要使用已有的组可以通过\n(n就是租的编号)的形式来获取。 
        ((())()) 有几组就数有几个左括号,第几组也是数左括号,第几个就是第几组。 
        */  
        String str = "wer13899800000ty123456754uioo";  
        //将字符串中的数字替换成#。  
        replaceAllDemo(str,"\\d{5,}","#");  
        String str1 = "erkktyqqquillllojl";  
        //将字符串中的叠词替换成单个字母。zzzz->z  
        replaceAllDemo(str1,"(.)\\1+","$1");  
        //$1表示获取第一个组的内容  
    }  
}  


3. 替换:


String replaceAll(String regex,String str)


public static void replaceAllDemo(String str,String reg,String newStr)  
{  
    str = str.replaceAll(reg,newStr);  
    System.out.println(str);  
}  


4.获取:
Pattern.compile(Regex) , Matcher()


import java.util.regex.*;  
//需要用到正则表达式包  
class RegexDemo2  
{  
    public static void getDemo()  
    {  
        String str = "ming tian jiu yao fang jia le ,da jia";  
        String reg = "\\b[a-z]{3}\\b";   
                   // '\b'表示单词边界。  
        //取出3个字符组成的单词。  
        //将规则封装成对象  
  
        Pattern p = Pattern.compile(reg);  
        //让正则对象和要作用的字符串相关联。  
        Matcher m = p.matcher(str);  
  
        //m.find();//讲规则作用到字符串上,并进行符合规则的字串查找。  
        //System.out.println(m.group());//用于获取匹配后的结果。  
  
        while(m.find)  
        {  
            System.out.println(m.group());  
              
        }  
    }  
}  


 *********************三个练习*******************


import java.util.regex.*;  
import java.util.*;  
class RegexDemo   
{  
    public static void main(String[] args)   
    {  
        test_1();  
        regexTest_2();  
        checkMail();  
    }  
  
  
    //需求:将下列字符串变成:我要学编程。  
    public static void test_1()  
    {  
        String str = "我我...我我...我要..要要....学学.....学学..编编编...程...程程..程";  
  
        /* 
        思路:需要将已有字符串变成另一个字符串,使用替换功能。 
        步骤:1,将所有.去掉。 
              2,将多个重复的字变成一个字。 
        */  
  
        str = str.replaceAll("\\.+","");  
        //System.out.println(str.replaceAll("(我)\\1+(要)\\2+(学)\\3+(编)\\4+(程)\\5+","$1$2$3$4$5"));   
        System.out.println(str);  
        String str1 = str.replaceAll("(.)\\1+","$1");  
        System.out.println(str1);  
    }  
  
      
    //需求2:将ip地址进行地址段顺序排序。  
      
    public static void regexTest_2()  
    {  
        String str = "192.68.1.254 102.49.23.013 10.10.10.10 2.2.2.2 8.109.90.30";  
        str = str.replaceAll("(\\d+)","00$1");  
        System.out.println(str);  
        str = str.replaceAll("0*(\\d{3})","$1");  
        System.out.println(str);  
        String[] arr = str.split(" +");  
        TreeSet<String> ts = new TreeSet<String>();  
        for(String s : arr)  
        {  
            ts.add(s);  
        }  
        for(String s : ts)  
        {  
            System.out.println(s.replaceAll("0*(\\d+)","$1"));  
        }  
    }  
          
      
  
    //需求3:对邮件地址进行校验  
  
    public static void checkMail()  
    {  
        String mail = "1@1.cn.com";  
        boolean b = mail.matches("\\w+@[a-zA-Z0-9]+(\\.[a-zA-Z]+){1,3}");  
        System.out.println(b);  
    }  
  
}  
0 0
原创粉丝点击