首页 > 编程 > Regex > 正文

JAVA中正则表达式匹配,替换,查找,切割的方法

2020-03-16 21:05:01
字体:大 中 小
来源:转载
供稿:网友

本文主要给大家介绍java正则表达式匹配,替换,查找,切割的方法,查找是用string类中的split(),字符串中的替换是replace(),感兴趣的朋友一起来学习吧

正则表达式的查找;主要是用到String类中的split();

String str;

str.split();方法中传入按照什么规则截取,返回一个String数组

常见的截取规则:

str.split("//.")按照.来截取

str.split(" ")按照空格截取

str.split("cc+")按照c字符来截取,2个c或以上

str.split((1)//.+)按照字符串中含有2个字符或以上的地方截取(1)表示分组为1

截取的例子;

按照分组截取;截取的位置在两个或两个以上的地方

 

 
  1. String str = "publicstaticccvoidddmain";  
  2. //对表达式进分组重用  
  3. String ragex1="(.)//1+";  
  4. String[] ss = str.split(ragex1); 
  5. for(String st:ss){ 
  6. System.out.println(st);  
  7. } 
  8. //按照两个cc+来截取 
  9. String ragex = " ";  
  10. //切割  
  11. String strs = "publicstaticccvoidddmain";  
  12. String ragexs = "cc+"; 
  13. String[] s = strs.split(ragexs); 
  14. for(String SSSS :s){ 
  15. System.out.println(SSSS); 
  16. } 
  17. System.out.println("=-========="); 

正则表达式中的替换;

语法定义规则;

 

 
  1. String s =str.replaceAll(ragex, newstr); 

字符串中的替换是replace();

将4个或4个以上的连续的数字替换成*

 

 
  1. // 替换 
  2. String str="wei232123jin234"; 
  3. String ragex = "//d{4,}"; 
  4. String newstr = "*"; 
  5. String s =str.replaceAll(ragex, newstr); 
  6. System.out.println(s); 

将重复的字符串换成一个*

 

 
  1. String str ="wwweiei222222jjjiiinnn1232"; 
  2. String ragex ="(.)//1+"; 
  3. String newStr ="*"; 
  4. String s = str.replaceAll(ragex, newStr); 
  5. System.out.println(s); 

将 我...我...要..要.吃...吃...饭 换成 我要吃饭

 

 
  1. String str = "我...我...要..要.吃...吃...饭"; 
  2. String regex = "//.+"; 
  3. String newStr = ""; 
  4. str=test(str, regex, newStr); 
  5. regex = "(.)//1+"; 
  6. newStr = "$1"; 
  7. test(str, regex, newStr); 
  8. public static String test(String str, String regex, String newStr) { 
  9. String str2 = str.replaceAll(regex, newStr); 
  10. System.out.println(str2); 
  11. return str2; 
  12. } 

正则表达式的字符串的获取

1,根据定义的正则表达式创建Pattern对象

2,使用Pattern对象类匹配

3,判断是否为true

4,加入到组

例子;

 

 
  1. String str = "public static void main(String[] args)" 
  2. + " public static void main(String[] args)public static void main(String[] args)"; 
  3. String ragex = "//b[a-zA-Z]{4,5}//b"; 
  4. Pattern p =Pattern.compile(ragex); 
  5. Matcher m = p.matcher(str); 
  6. while(m.find()){ 
  7. String s = m.group(); 
  8. System.out.println(s); 
  9. } 

作业:

1,获取

user中的user

 

 
  1. String str ="<html>user</html>"; 
  2. String regex = "<html>|</html>";  
  3. String newStr = "";  
  4. String str2 = str.replaceAll(regex, newStr); 
  5. System.out.println(str2); 

2,获取dhfjksaduirfn11@qq.comdsjhkfawang@163.comwokaz中的邮箱号码

 

 
  1. String regex = " ";  
  2. String[] strs=str.split(regex); 
  3. for(String str2:strs){ 
  4. String ragexDemo = "[a-zA-Z0-9]([a-zA-Z0-9]*[-_]?[a-zA-Z0-9]+)*" 
  5. + "@([a-zA-Z0-9]+)//.[a-zA-Z]+//.?[a-zA-Z]{0,2}"; 
  6. Pattern p = Pattern.compile(ragexDemo); 
  7. Matcher m = p.matcher(str2); 
  8. while(m.find()){ 
  9. System.out.println(m.group()); 
  10. } 
  11. } 

示例代码:

 

 
  1. import java.util.ArrayList; 
  2. import java.util.regex.Matcher; 
  3. import java.util.regex.Pattern; 
  4.  
  5. public class test { 
  6. public static void main(String[] args) { 
  7. getStrings(); //用正则表达式获取指定字符串内容中的指定内容 
  8. System.out.println("********************"); 
  9. replace(); //用正则表达式替换字符串内容 
  10. System.out.println("********************"); 
  11. strSplit(); //使用正则表达式切割字符串 
  12. System.out.println("********************"); 
  13. strMatch(); //字符串匹配 
  14. } 
  15.  
  16. private static void strMatch() { 
  17. String phone = "13539770000"; 
  18. //检查phone是否是合格的手机号(标准:1开头,第二位为3,5,8,后9位为任意数字) 
  19. System.out.println(phone + ":" + phone.matches("1[358][0-9]{9,9}")); //true  
  20.  
  21. String str = "abcd12345efghijklmn"; 
  22. //检查str中间是否包含12345 
  23. System.out.println(str + ":" + str.matches("//w+12345//w+")); //true 
  24. System.out.println(str + ":" + str.matches("//w+123456//w+")); //false 
  25. } 
  26.  
  27. private static void strSplit() { 
  28. String str = "asfasf.sdfsaf.sdfsdfas.asdfasfdasfd.wrqwrwqer.asfsafasf.safgfdgdsg"; 
  29. String[] strs = str.split("//."); 
  30. for (String s : strs){ 
  31. System.out.println(s); 
  32. }  
  33. } 
  34.  
  35. private static void getStrings() { 
  36. String str = "rrwerqq84461376qqasfdasdfrrwerqq84461377qqasfdasdaa654645aafrrwerqq84461378qqasfdaa654646aaasdfrrwerqq84461379qqasfdasdfrrwerqq84461376qqasfdasdf"; 
  37. Pattern p = Pattern.compile("qq(.*?)qq"); 
  38. Matcher m = p.matcher(str); 
  39. ArrayList<String> strs = new ArrayList<String>(); 
  40. while (m.find()) { 
  41. strs.add(m.group(1));  
  42. }  
  43. for (String s : strs){ 
  44. System.out.println(s); 
  45. }  
  46. } 
  47.  
  48. private static void replace() { 
  49. String str = "asfas5fsaf5s4fs6af.sdaf.asf.wqre.qwr.fdsf.asf.asf.asf"; 
  50. //将字符串中的.替换成_,因为.是特殊字符,所以要用/.表达,又因为/是特殊字符,所以要用//.来表达. 
  51. str = str.replaceAll("//.", "_"); 
  52. System.out.println(str);  
  53. } 
  54. } 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表