博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java正则表达式
阅读量:5064 次
发布时间:2019-06-12

本文共 2947 字,大约阅读时间需要 9 分钟。

1.为什么要用正则表达式

   如果不用正则表达式判断某一个字符串是否满足格式要求显然会有点麻烦,比如我们对qq进行判断,如果采用如下代码:

1 import java.util.*; 2 import java.io.*; 3  4  5 public class String_init { 6  7     public static void main(String[] args) throws FileNotFoundException{ 8         String str = "123456789"; 9         char []ch = str.toCharArray();//转换为char数组10         boolean isQQ = true;11         for(char chs:ch)12         {13             if(chs <'0' || chs > '9')14             {15                 isQQ = false;16                 break;17             }18         }19         20         if(isQQ)21         {22             System.out.println("是QQ");23         }24         else25         {26             System.out.println("不是QQ");27         }28     }29 }

是不是觉得很麻烦?

  如果我们采用正则表达式来进行判断,那么代码如下:

1 import java.util.*; 2 import java.io.*; 3  4  5 public class String_init { 6  7     public static void main(String[] args) throws FileNotFoundException{ 8         String str = "123456789"; 9         if(str.matches("\\d+"))10         {11             System.out.println("isQQ");12         }13         else14         {15             System.out.println("notQQ");16         }17     }18 }

  是不是更简单快捷.所以采用正则表达式还是非常有必要的.代码中\d代表数字,+代表1次或者多次,之所以用两个\\是因为考虑到了转义字符.

  另外一个小案例,提取字符串中的三个字母组成的单词

1 import java.util.regex.*; 2  3  4 public class String_init { 5  6     public static void main(String[] args){ 7         String str="da jia hao,ming tian bu fang jia"; 8         // \b表示单词开始和结束 9         String regex = "\\b[a-zA-Z]{3}\\b";10         //正则表达式的逻辑11         Pattern p = Pattern.compile(regex);12         Matcher m = p.matcher(str);//挖掘所有符合条件的子串13         while(m.find())14         {15             System.out.println(m.group());//输出匹配的子字符串16             System.out.println(m.start()+":"+m.end());//输出这个字符串的起始位置17         }18     }19 }

2.利用正则表达式的几个小程序

  用正则表达式替换字符串中的满足条件的某个字符串:

1 import java.util.regex.*; 2  3  4 public class String_init { 5  6     public static void main(String[] args){ 7         String str = "hello1234wwwwwwwwww5678tttttttttttttxianxia"; 8          9         //替换10         //str = str.replaceAll("[0-9]{4}", "ABCD");11         str = str.replaceAll("[a-zA-Z]{5,}", "!");//连续超过五次的字符替换12         System.out.println(str);13         14     }15 }

  split拆分

1 import java.util.regex.*; 2  3  4 public class String_init { 5  6     public static void main(String[] args){ 7         String str = "hellowwwwwwwwwwaaaaaaadafengchuioooooooooooooofeixiang"; 8         String []names = str.split("(.)\\1+");//(.)代表任意字符  1+:1个字符连续出现多次 9         for(String st:names)10         {11             System.out.println(st);12         }13     }14 }

  正则表达式匹配验证与小结

  判断是否是QQ号

1 import java.util.regex.*; 2  3  4 public class String_init { 5  6     public static void main(String[] args){ 7         String str = "1231"; 8         String regex="\\d{5,10}";//5-10位数字 9         boolean isit = str.matches(regex);10         System.out.println(isit);11     }12 }

 

转载于:https://www.cnblogs.com/xiaochi/p/9178722.html

你可能感兴趣的文章
Oracle 游标使用全解
查看>>
SQL语句在查询分析器中可以执行,代码中不能执行
查看>>
yii 1.x 添加 rules 验证url数组
查看>>
html+css 布局篇
查看>>
银行排队问题(详解队列)
查看>>
input输入提示历史记录
查看>>
序列化和反序列化(1)---[Serializable]
查看>>
对二维数据进行边界拓展
查看>>
asp.net 验证控件
查看>>
评论列表显示及排序,个人中心显示
查看>>
微软职位内部推荐-Software Engineer II
查看>>
区分Integer.getInteger和Integer.valueOf使用方法
查看>>
MySQL oracle 分页
查看>>
iOS基础-UIKit框架-触摸事件-响应者链条
查看>>
SQL优化
查看>>
利用Highcharts插件制作动态图表
查看>>
用C语言操纵Mysql
查看>>
轻松学MVC4.0–6 MVC的执行流程
查看>>
4.9 Parser Generators
查看>>
[10月18日的脚本] 从Access中导入多个表到Excel
查看>>