`
AlexShaw
  • 浏览: 12869 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
最近访客 更多访客>>
社区版块
存档分类
最新评论

黑马程序员_java学习日记_Java基础_正则表达式

 
阅读更多

--------------------- android培训java培训java学习型技术博客、期待与您交流! ----------------------

正则表达式:

作用:用于专门操作字符串

特点:可以用特定字符来表示代码规则,简化了书写

好处:简化对字符串的复杂操作

所以学习正则表达式就是在学习特殊符号的使用

传统方式校验使用了string类的方法进行组合判断。但是代码过于复杂

正则表达式中,\要出现就成对出现

//5-15位,0不能开头,不能为字母

boolean b = qq.matches("[1-9][0-9]{4,14}");

//第一个字符只能是abc,只能规则一个字符

boolean c = str.matches("[abc]");

//第二位要么出现一次要么没有

boolean e = str1.matches("[a-z]\\d?");

x? 要么一次要么一次也没有

x* 零次或多次

x+ 一次或多次

x{n}? x恰好n

x{n,}? X至少N

x{n,m}?  n-m

//手机号

boolean f = tel.matches("[1][5,3,8]\\d{9}");

split:切割

tel.split(" +");//按照多个空格来切割,返回一个数组

String[] s = str1.split("\\.");//.是正则表达式的特殊字符需要转义

String str = "c:\\a\\1.txt";//转义\\

str.split("\\\\");

 

String str = "jhaasdkkhas";

       //第一个字符任意所以为.

       //(.)封装成一个组  每个组都有一个编号  \n 表示引用哪一个组 \n需要被转义

       //(.)\\1+表示出现一次或者多次

       String[] s = str.split("");

正则表达式的弊端:阅读行极差

替换 replaceAll

//超过5个数字就用#表示

       String str = "asd65as786d8as76d86d8123123asdqr";

       String string = str.replaceAll("\\d{5,}", "#");

替换2

//叠词替换

       String str = "aaaaaasdas2232";

       String s = str.replaceAll("(.)\\1+", "?");

       System.out.println(s);

 

 

//将重叠的字母替换成单个字母

       String str = "aaaaaasdas2232";

       //通过$获取前面规则中的组$1

       String s = str.replaceAll("(.)\\1+", "$1");

       System.out.println(s);

//获取指定规则的字符串

       //步骤:

       //1.将正则表达式封装成对象

       String str = "ming tian jiu yao fang jia la";

       String reg = "\\b[a-z]{3}\\b";//规则

       //2.让正则对象和要操作的字符串相关联

       Pattern p = Pattern.compile(reg);

       //其实string类中的match方法用的就是patternmatch对象完成的

       //只不过封装后用起来简单但单一

       Matcher m = p.matcher(str);

       //3.关联后获取正则匹配引擎

       //这一步是必须的find group

       boolean b;

       //boolean b = m.find();//将规则作用于字符串,并进行符合规则的子串查找

       //System.out.println(m.group());//用户获取匹配后的结果

       //4.通过引擎对符合规则的子串进行操作,比如取出

       //同一个匹配器使用同一个指针

       while(b = m.find())

       {

           System.out.println(m.group());

           //子串的索引位置

           System.out.println(m.start()+"..."+m.end());

       }

 

Test

 

    //如果想知道字符串是对是错使用匹配

       //如果想用一个字符串变成另一个。使用替换

       //将一个字符串变成多个  切割,切割获取规则以外的子串

       //拿到符合需求的字符串子串,获取获取符合规则的子串

       String str = "我我..要要...学学学学学....编程";

       str = str.replaceAll("\\.", "");

       str = str.replaceAll("(.)\\1+", "$1");

       System.out.println(str);

IP排序

//IP按照地址段进行排序

       //先将所有IP地址补满三位补零

       //每一段直取三位

       String str = "192.144.23.4 123.4.33.1 23.45.33.1 123.43.22.5";

       str = str.replaceAll("(\\d+)", "00$1");

       str = str.replaceAll("0*(\\d{3})", "$1");

       String[] strArray = str.split(" ");

       TreeSet<String> ts = new TreeSet<String>();

       for(String s :strArray)

       {

       ts.add(s);

       }

       System.out.println();

邮件校验

    String str = "kill@163.com";

    System.out.println(str.matches("[a-zA-Z0-9_]+@[a-zA-Z0-9]+\\.([a-zA-Z0-9]+)+"));

读取文件中的邮箱字符串

BufferedReader br = new BufferedReader(new FileReader("1.txt"));

       String str = null;

       String regex = "[a-zA-Z0-9_]+@[a-zA-Z0-9]+\\.([a-zA-Z0-9]+)+";

       Pattern p = Pattern.compile(regex);

       while((str = br.readLine())!= null)

       {

           Matcher m = p.matcher(str);

           while(m.find())

           {

              System.out.println(m.group());

           }

       }

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics