java正则表达

xiaoxiao2021-02-28  48

Java语言基础之正则表达式

 

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

 

字符类

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

 

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

 

?  0或1次 *  0或1次以上 +  1或1次以上 {n} n  次 {n,} n次以上 {n,m} n次到m次

 

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

 

[java] view plain copy

package Com.example.string;    import java.util.regex.Matcher;  import java.util.regex.Pattern;    public class main {        public static void main(String[] args) {          String data="java";          boolean res=Pattern.matches("123java1", data);  //          System.out.println(res);                              /********************************************************************/           String[] dataArr={"moon","mon","mono"};          for(int i=0;i<dataArr.length;i++)          {              boolean result =Pattern.matches("m(o+)n", dataArr[i]);  // "m(o+)n" 正则表达式              if(result)              {                  System.out.println("字符串"+dataArr[i]+"匹配模式"+dataArr+"成功");                 }              else              {                  System.out.println("字符串"+dataArr[i]+"匹配模式"+dataArr+"失败");              }          }          /********************************************************************/                              /********************************************************************/          // "(||||)"匹配多个字母组合 ;[]匹配单个字符          String [] dataArr2={"bean","baan","boon","buin","byn"};          for(int i=0;i<dataArr2.length;i++)          {              boolean result = Pattern.matches("b(oo|ea|y)n", dataArr2[i]);                            if(result)              {                  System.out.println("字符串"+dataArr2[i]+"匹配模式"+dataArr2+"成功");                 }              else              {                  System.out.println("字符串"+dataArr2[i]+"匹配模式"+dataArr2+"失败");              }                        }          /********************************************************************/          String [] dataArr3 = {"100","b20","c30","df10000" ,"gh0t","aaa","1"};                   for(int i=0;i<dataArr3.length;i++)            {              boolean result = Pattern.matches("([a-z]+)([0-9]+)", dataArr3[i]); // 匹配前面是字母,后面是数字的字符串              if(result)              {                  System.out.println(dataArr3[i]+"匹配!!!!!!!!!!");              }              else              {                  System.out.println(dataArr3[i]+"不匹配");              }                            }                              /********************************************************************/          String [] dataArr5= { "google""gooogle""gooooogle""goooooogle","ggle"};           for(int i=0;i<dataArr5.length;i++)          {              boolean result = Pattern.matches("g(o{2,5})gle", dataArr5[i]);  // 指定o的重复数量              if(result)              {                  System.out.println("字符串"+dataArr5[i]+"匹配模式"+dataArr5+"成功");               }              else              {                  System.out.println("字符串"+dataArr5[i]+"匹配模式"+dataArr5+"失败");              }          }          /********************************************************************/                              /********************************************************************/          String str="薪水,职位 姓名;年龄 性别";           String [] dataArr4=str.split("[,/s;t]");  // 使用split,将其中“,”,“空格”,“;”隔开的字符串,分别放入到dataArr4中           for(int i=0;i<dataArr4.length;i++)          {              System.out.println(dataArr4[i]);          }          /********************************************************************/                                        /********************************************************************/          String str2="10元 1000人民币 10000元 100000RMB";           str2=str2.replaceAll("(元|人民币|RMB)""¥");  // 替换字符          System.out.println(str2);           /********************************************************************/                                        /********************************************************************/          /*          * 根据正则表达式获取字符串中的子串             1,用 Pattern 的静态方法compile编译正则表达式             2,调用 Pattern 的方法matcher获取匹配器             3,用匹配器的find方法查找符合正则表达式的子串,如果符合规则则返回true             4,用匹配器的group方法捕获匹配的字串             find方法找到匹配字串后可以用 start end 和group方法来获取匹配字串             start 是匹配字串的左索引             end 是匹配字串的右索引的下一个索引             捕获组是从 1 开始从左到右的索引。组零表示整个模式,因此             m.find(0)等效于 m.find()             m.start(0)等效于 m.start()             m.end(0) 等效于m.end()             m.group(0) 等效于 m.group()。          */          String [] dataArr6={"ab","Ab","aB","abc"};  // 忽略大小写          Pattern pattern= Pattern.compile("ab", Pattern.CASE_INSENSITIVE); // 调用pattern静态方法编译匹配器          for(int i=0;i<dataArr6.length;i++)          {              Matcher matcher=pattern.matcher(dataArr6[i]);  // 调用matcher获取匹配器              if(matcher.find()) // 调用find方法查找符合正则表达式的子串  // 查到即返回              {                  System.out.println(dataArr6[i]);              }              System.out.println(matcher.group(0)+" **"); // 全部匹配返回                        }          /********************************************************************/        }    }  

 

转载请注明原文地址: https://www.6miu.com/read-2631294.html

最新回复(0)