java正则表达

Java语言基础之正则表达式

通过特定符号来表示规则,用来操作字符串的字符串表达式,regex表示

字符类

[abc] a b c
[^abc]   除了 a b c 以外的所有字符
[a-z] a z
[a-zA-Z]  字母
[a-d[m-p]] [a-dm-p] a d m-p
[a-z&&[def]]  等于 [def]
[a-z&&[^def]  等于 [a-cg-z]

[a-z&&[^m-p] 等于[a-lq-z]

?  01
*  01次以上
+  11次以上
{n} n  
{n,} n次以上
{n,m} n次到m


正则表达式内部将规则封装为类 即 java.util.regex包中的 Pattern

[java]  view plain  copy
  1. package Com.example.string;  
  2.   
  3. import java.util.regex.Matcher;  
  4. import java.util.regex.Pattern;  
  5.   
  6. public class main {  
  7.   
  8.     public static void main(String[] args) {  
  9.         String data="java";  
  10.         boolean res=Pattern.matches("123java1", data);  //  
  11.         System.out.println(res);  
  12.           
  13.           
  14.         /********************************************************************/   
  15.         String[] dataArr={"moon","mon","mono"};  
  16.         for(int i=0;i<dataArr.length;i++)  
  17.         {  
  18.             boolean result =Pattern.matches("m(o+)n", dataArr[i]);  // "m(o+)n" 正则表达式  
  19.             if(result)  
  20.             {  
  21.                 System.out.println("字符串"+dataArr[i]+"匹配模式"+dataArr+"成功");   
  22.   
  23.             }  
  24.             else  
  25.             {  
  26.                 System.out.println("字符串"+dataArr[i]+"匹配模式"+dataArr+"失败");  
  27.             }  
  28.         }  
  29.         /********************************************************************/  
  30.           
  31.           
  32.         /********************************************************************/  
  33.         // "(||||)"匹配多个字母组合 ;[]匹配单个字符  
  34.         String [] dataArr2={"bean","baan","boon","buin","byn"};  
  35.         for(int i=0;i<dataArr2.length;i++)  
  36.         {  
  37.             boolean result = Pattern.matches("b(oo|ea|y)n", dataArr2[i]);  
  38.               
  39.             if(result)  
  40.             {  
  41.                 System.out.println("字符串"+dataArr2[i]+"匹配模式"+dataArr2+"成功");   
  42.   
  43.             }  
  44.             else  
  45.             {  
  46.                 System.out.println("字符串"+dataArr2[i]+"匹配模式"+dataArr2+"失败");  
  47.             }  
  48.               
  49.         }  
  50.         /********************************************************************/  
  51.         String [] dataArr3 = {"100","b20","c30","df10000" ,"gh0t","aaa","1"};   
  52.   
  53.       
  54.         for(int i=0;i<dataArr3.length;i++)    
  55.         {  
  56.             boolean result = Pattern.matches("([a-z]+)([0-9]+)", dataArr3[i]); // 匹配前面是字母,后面是数字的字符串  
  57.             if(result)  
  58.             {  
  59.                 System.out.println(dataArr3[i]+"匹配!!!!!!!!!!");  
  60.             }  
  61.             else  
  62.             {  
  63.                 System.out.println(dataArr3[i]+"不匹配");  
  64.             }  
  65.                   
  66.         }  
  67.           
  68.           
  69.         /********************************************************************/  
  70.         String [] dataArr5= { "google""gooogle""gooooogle""goooooogle","ggle"};   
  71.         for(int i=0;i<dataArr5.length;i++)  
  72.         {  
  73.             boolean result = Pattern.matches("g(o{2,5})gle", dataArr5[i]);  // 指定o的重复数量  
  74.             if(result)  
  75.             {  
  76.                 System.out.println("字符串"+dataArr5[i]+"匹配模式"+dataArr5+"成功");   
  77.             }  
  78.             else  
  79.             {  
  80.                 System.out.println("字符串"+dataArr5[i]+"匹配模式"+dataArr5+"失败");  
  81.             }  
  82.         }  
  83.         /********************************************************************/  
  84.           
  85.           
  86.         /********************************************************************/  
  87.         String str="薪水,职位 姓名;年龄 性别";   
  88.         String [] dataArr4=str.split("[,/s;t]");  // 使用split,将其中“,”,“空格”,“;”隔开的字符串,分别放入到dataArr4中   
  89.         for(int i=0;i<dataArr4.length;i++)  
  90.         {  
  91.             System.out.println(dataArr4[i]);  
  92.         }  
  93.         /********************************************************************/  
  94.           
  95.           
  96.           
  97.         /********************************************************************/  
  98.         String str2="10元 1000人民币 10000元 100000RMB";   
  99.         str2=str2.replaceAll("(元|人民币|RMB)""¥");  // 替换字符  
  100.         System.out.println(str2);   
  101.         /********************************************************************/  
  102.           
  103.           
  104.           
  105.         /********************************************************************/  
  106.         /* 
  107.          * 根据正则表达式获取字符串中的子串 
  108.             1,用 Pattern 的静态方法compile编译正则表达式 
  109.             2,调用 Pattern 的方法matcher获取匹配器 
  110.             3,用匹配器的find方法查找符合正则表达式的子串,如果符合规则则返回true 
  111.             4,用匹配器的group方法捕获匹配的字串 
  112.             find方法找到匹配字串后可以用 start end 和group方法来获取匹配字串 
  113.             start 是匹配字串的左索引 
  114.             end 是匹配字串的右索引的下一个索引 
  115.             捕获组是从 1 开始从左到右的索引。组零表示整个模式,因此 
  116.             m.find(0)等效于 m.find() 
  117.             m.start(0)等效于 m.start() 
  118.             m.end(0) 等效于m.end() 
  119.             m.group(0) 等效于 m.group()。 
  120.          */  
  121.         String [] dataArr6={"ab","Ab","aB","abc"};  // 忽略大小写  
  122.         Pattern pattern= Pattern.compile("ab", Pattern.CASE_INSENSITIVE); // 调用pattern静态方法编译匹配器  
  123.         for(int i=0;i<dataArr6.length;i++)  
  124.         {  
  125.             Matcher matcher=pattern.matcher(dataArr6[i]);  // 调用matcher获取匹配器  
  126.             if(matcher.find()) // 调用find方法查找符合正则表达式的子串  // 查到即返回  
  127.             {  
  128.                 System.out.println(dataArr6[i]);  
  129.             }  
  130.             System.out.println(matcher.group(0)+" **"); // 全部匹配返回  
  131.               
  132.         }  
  133.         /********************************************************************/  
  134.   
  135.     }  
  136.   
  137. }  

Java语言基础之正则表达式

猜你喜欢

转载自blog.csdn.net/chehec2010/article/details/80362945