首页 > 编程 > 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. //按照两个cc+来截取 
  8. String ragex = " ";  
  9. //切割  
  10. String strs = "publicstaticccvoidddmain";  
  11. String ragexs = "cc+"
  12. String[] s = strs.split(ragexs); 
  13. for(String SSSS :s){ 
  14. System.out.println(SSSS); 
  15. 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; 

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

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); 

作业:

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()); 

示例代码:

 

 
  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. private static void strMatch() { 
  16. String phone = "13539770000"
  17. //检查phone是否是合格的手机号(标准:1开头,第二位为3,5,8,后9位为任意数字) 
  18. System.out.println(phone + ":" + phone.matches("1[358][0-9]{9,9}")); //true  
  19.  
  20. String str = "abcd12345efghijklmn"
  21. //检查str中间是否包含12345 
  22. System.out.println(str + ":" + str.matches("//w+12345//w+")); //true 
  23. System.out.println(str + ":" + str.matches("//w+123456//w+")); //false 
  24.  
  25. private static void strSplit() { 
  26. String str = "asfasf.sdfsaf.sdfsdfas.asdfasfdasfd.wrqwrwqer.asfsafasf.safgfdgdsg"
  27. String[] strs = str.split("//."); 
  28. for (String s : strs){ 
  29. System.out.println(s); 
  30. }  
  31.  
  32. private static void getStrings() { 
  33. String str = "rrwerqq84461376qqasfdasdfrrwerqq84461377qqasfdasdaa654645aafrrwerqq84461378qqasfdaa654646aaasdfrrwerqq84461379qqasfdasdfrrwerqq84461376qqasfdasdf"
  34. Pattern p = Pattern.compile("qq(.*?)qq"); 
  35. Matcher m = p.matcher(str); 
  36. ArrayList<String> strs = new ArrayList<String>(); 
  37. while (m.find()) { 
  38. strs.add(m.group(1));  
  39. }  
  40. for (String s : strs){ 
  41. System.out.println(s); 
  42. }  
  43.  
  44. private static void replace() { 
  45. String str = "asfas5fsaf5s4fs6af.sdaf.asf.wqre.qwr.fdsf.asf.asf.asf"
  46. //将字符串中的.替换成_,因为.是特殊字符,所以要用/.表达,又因为/是特殊字符,所以要用//.来表达. 
  47. str = str.replaceAll("//.""_"); 
  48. System.out.println(str);  

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