欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > 正则表达式

正则表达式

2024/11/30 6:45:11 来源:https://blog.csdn.net/ioncannontic/article/details/140368456  浏览:    关键词:正则表达式

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 字符类(只匹配单个字符)
    字符类(只匹配单个字符)
  • 预定义字符(只匹配单个字符)
    在这里插入图片描述
  • 数量词
    在这里插入图片描述

小结

  • 正则表达式的书写规则
符号含义举例
?0次或1次\\d?
*0次或多次\\d* ---------- (abc)*
+1次或多次\\d+ --------- (abc)+
{}具体次数a{7} --------- \\d{7, 19}
(?i)忽略后面字符的大小写(?i)abc
a((?i)b)c只忽略b的大小写a((?i)b)c
[]里面的内容出现1次[abc]
^取反[^abc]
&&交集,不能写单个的&[a-z&&m-p]
.任意字符\n回车符号不匹配
\转义字符\\d
\\d0-9\\d+
\\D非0-9\\D+
\\s空白字符\\D+
\\S非空白字符[^\s]
\w单词字符[a-zA-Z_0-9]
\\W非单词字符[^\w]
()分组并集 a(bc)+
写在方括号外面表示

# 正则表达式爬取信息

// 需求1:从以下内容中爬取出手机、邮箱、座机电话等信息private static void method1() {String data = "一起学Java,\n" +"电话:13511296261,15265432051,\n" +"或者联系邮箱:bonus@163.com,\n" +"座机电话:010123456789,010-123564812,\n" +"邮箱:13194641245@qq.com,\n" +"邮箱:dlei0009@126.com,\n" +"热线电话:400-618-9080,400-618-1200,400-6185000,4006186666";// 1、定义爬取规则String regex = "(1[3-9]\\d{9})|(0\\d{2,7}-?\\d{4,19})|([\\w&&[^0]]\\w{2,}@\\w{2,20}(\\.\\w{2,10}){1,2})"+ "|(400(-?\\d{3,7}){2})";// 2、正则表达式封装成Pattern对象Pattern pattern = Pattern.compile(regex);// 3、通过Pattern对象获取查找内容的匹配器对象Matcher matcher = pattern.matcher(data);// 4、定义循环爬取信息while (matcher.find()) {String rs = matcher.group(); // 获取到找到的内容System.out.println(rs);}}
package com.itheima.regex;import java.util.Arrays;public class RegexTest4 {public static void main(String[] args) {// 1、public String replaceAll(String regex, String newStr):按照正则表达式匹配的内容进行替换// 需求1:请把 古力娜扎ai8888迪丽热巴999aa5566玛尔扎哈fbbhdjfn4156卡尔扎巴,中间的非中文字符替换成"-"String s1 = "古力娜扎ai8888迪丽热巴999aa5566玛尔扎哈fbbhdjfn4156卡尔扎巴";System.out.println(s1.replaceAll("\\w+", "-"));// 需求2(拓展):某语音系统,收到一个口吃的人说的“我我我喜欢编编编编编编编编编程程!”需要优化成“我喜欢编程!”/***  (.) 一组,匹配任意字符*  \\1:为这个组声明一个组号:1号*  +:声明必须是重复的字*  $1可以去取到第一组代表的那个重复的字*/String s2 = "我我我喜欢编编编编编编编编编程程!";System.out.println(s2.replaceAll("(.)\\1+", "$1"));// 2、public String[] split(String regex):按照正则表达式匹配的内容进行分割字符串,返回一个字符串数组// 需求1:请把 古力娜扎ai8888迪丽热巴999aa5566玛尔扎哈fbbhdjfn4156卡尔扎巴,中的人名获取出来String s3 = "古力娜扎ai8888迪丽热巴999aa5566玛尔扎哈fbbhdjfn4156卡尔扎巴";String[] names = s3.split("\\w+");System.out.println(Arrays.toString(names));}
}

版权声明:

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

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