当前位置: 首页> 健康> 母婴 > 正则表达式练习

正则表达式练习

时间:2025/7/11 7:55:01来源:https://blog.csdn.net/m0_71513446/article/details/140201183 浏览次数:0次

正则表达式练习

文章目录

  • 正则表达式练习
    • 有条件的爬取数据
    • 贪婪爬取和非贪婪爬取
    • 正则表达式在字符串方法中的使用
    • 分组
      • 练习

有条件的爬取数据

1720141617686

package com.example.demo;import java.util.regex.Matcher;
import java.util.regex.Pattern;public class RegexDemo{public static void main(String[] args){String s = "Java自从95年问世以来,经历了很多版本,目前企业中用的最多的是Java8和Java11,"+"因为这两个是长期支持版本,下一个长期支持版本是Java17,相信在未来不久Java17也会逐渐登上历史舞台";String string = "Java自从95年问世以来,经历了很多版本,目前企业中用的最多的是Java8和JAva11,"+"因为这两个是长期支持版本,下一个长期支持版本是JAVa17,相信在未来不久JAVA17也会逐渐登上历史舞台";//        1.定义正则表达式
//        ?理解为前面的数据Java
//        =表示在Java后面要跟随的数据
//        但是在获取的时候,只获取前半部分String regex = "Java(?=8|11|17)";
//        需求1String regex1 = "((?i)Java)(?=8|11|17)";
//        需求2String regex2 = "((?i)Java)(8|11|17)";String regex3 = "((?i)Java)(?:8|11|17)";
//        需求3String regex4 = "((?i)Java)(?!8|11|17)";Pattern p = Pattern.compile(regex);Matcher m = p.matcher(string);while(m.find()){System.out.println(m.group());}}
}

贪婪爬取和非贪婪爬取

1720143057594

package com.example.demo;import java.util.regex.Matcher;
import java.util.regex.Pattern;public class RegexDemo{/* 只写+和*表示贪婪匹配+? 非贪婪匹配*? 非贪婪匹配贪婪爬取:在爬取数据的时候尽可能的多获取数据非贪婪爬取:在爬取数据的时候尽可能的多获取数据ab+:贪婪爬取:abbbbbbbbbbbbbb非贪婪爬取:abJava中默认的就是贪婪爬取如果我们在数量词 + * 的后面加上?,那么就是非贪婪爬取*/public static void main(String[] args){String s = "Java自从95年问世以来,abbbbbbbbbbbbbbaaaaaaaaaaaa经历了很多版本,目前企业中用的最多的是Java8和Java11,"+"因为这两个是长期支持版本,下一个长期支持版本是Java17,相信在未来不久Java17也会逐渐登上历史舞台";
//        1.定义正则表达式String regex = "ab+";
//        String regex = "ab+?";Pattern p = Pattern.compile(regex);Matcher m = p.matcher(s);while(m.find()){System.out.println(m.group());}}
}

正则表达式在字符串方法中的使用

1720143488091

package com.example.demo;public class RegexDemo{public static void main(String[] args) {
//        public String  replaceAll(String regex, String newStr)按正则表达式的规则进行替换
//        public String[] split(String regex):按正则表达式的规则切割字符串/* 有一段字符串:小诗诗dqwefqwfqwfqw12312小丹丹dqwefqwfqwfqw12312小慧慧要求1:把字符串中三个姓名之间的字母替换为vs要求2:把字符串中的三个姓名切割出来*/String s = "有一段字符串:小诗诗dqwefqwfqwfqw12312小丹丹dqwefqwfqwfqw12312小慧慧";//细节:
//        方法在底层跟之前一样也会创建文本解析器的对象
//        然后从头开始去读字符串的内容只要有满足的,那么就用第二个参数去替换
//        String result1 = s.replaceAll("[\\w&&[^_]]+", "vs");
//        System.out.println(result1);String[] arr = s.split("[\\w&&[^_]]+");for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);}}
}

分组

分组就是一个小括号

1720144581351

练习

1720144714624

package com.example.demo;public class RegexDemo{public static void main(String[] args) {
//        \\组号:表示把第x组的内容再拿出来用一次String regex1 = "(.).+\\1";System.out.println("a123a".matches(regex1));System.out.println("b123b".matches(regex1));System.out.println("11231".matches(regex1));System.out.println("&123&".matches(regex1));System.out.println("a123b".matches(regex1));System.out.println("-------------------------------");String regex2 = "(.+).+\\1";System.out.println("abc123abc".matches(regex2));System.out.println("b456b".matches(regex2));System.out.println("123789123".matches(regex2));System.out.println("&!@123&!@".matches(regex2));System.out.println("abc123abd".matches(regex2));System.out.println("-------------------------------");
//        (.):把首字母看成一组
//        \\2:把首字母拿出来再次使用
//        *:作用于\\2,表示后面重复的内容出现0次或多次String regex3 = "((.)\\2*).+\\1";System.out.println("aaa123aaa".matches(regex3));System.out.println("bbb456bbb".matches(regex3));System.out.println("111789111".matches(regex3));System.out.println("&&abc&&".matches(regex3));System.out.println("aaa123aab".matches(regex3));}
}

1720145707824

package com.example.demo;public class RegexDemo{public static void main(String[] args) {String str = "我要学学编编编编程程程程程程程程";
//        $1  表示把正则表达式中第一组的内容,再拿来用String result = str.replaceAll("(.)\\1+", "$1");System.out.println(result);}
}

17201457736511720145866796

关键字:正则表达式练习

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: