正则表达式

打印 上一主题 下一主题

主题 975|帖子 975|积分 2925







  • 字符类(只匹配单个字符)

  • 预定义字符(只匹配单个字符)

  • 数目词

小结



  • 正则表达式的书写规则
符号含义举例?0次或1次\\d?*0次或多次\\d* ---------- (abc)*+1次或多次\\d+ --------- (abc)+{}具体次数a{7} --------- \\d{7, 19}(?i)忽略后面字符的大小写(?i)abca((?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. // 需求1:从以下内容中爬取出手机、邮箱、座机电话等信息
  2.     private static void method1() {
  3.         String data = "一起学Java,\n" +
  4.                 "电话:13511296261,15265432051,\n" +
  5.                 "或者联系邮箱:bonus@163.com,\n" +
  6.                 "座机电话:010123456789,010-123564812,\n" +
  7.                 "邮箱:13194641245@qq.com,\n" +
  8.                 "邮箱:dlei0009@126.com,\n" +
  9.                 "热线电话:400-618-9080,400-618-1200,400-6185000,4006186666";
  10.         // 1、定义爬取规则
  11.         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})"
  12.                 + "|(400(-?\\d{3,7}){2})";
  13.         // 2、正则表达式封装成Pattern对象
  14.         Pattern pattern = Pattern.compile(regex);
  15.         // 3、通过Pattern对象获取查找内容的匹配器对象
  16.         Matcher matcher = pattern.matcher(data);
  17.         // 4、定义循环爬取信息
  18.         while (matcher.find()) {
  19.             String rs = matcher.group(); // 获取到找到的内容
  20.             System.out.println(rs);
  21.         }
  22.     }
复制代码
  1. package com.itheima.regex;
  2. import java.util.Arrays;
  3. public class RegexTest4 {
  4.     public static void main(String[] args) {
  5.         // 1、public String replaceAll(String regex, String newStr):按照正则表达式匹配的内容进行替换
  6.         // 需求1:请把 古力娜扎ai8888迪丽热巴999aa5566玛尔扎哈fbbhdjfn4156卡尔扎巴,中间的非中文字符替换成"-"
  7.         String s1 = "古力娜扎ai8888迪丽热巴999aa5566玛尔扎哈fbbhdjfn4156卡尔扎巴";
  8.         System.out.println(s1.replaceAll("\\w+", "-"));
  9.         // 需求2(拓展):某语音系统,收到一个口吃的人说的“我我我喜欢编编编编编编编编编程程!”需要优化成“我喜欢编程!”
  10.         /**
  11.          *  (.) 一组,匹配任意字符
  12.          *  \\1:为这个组声明一个组号:1号
  13.          *  +:声明必须是重复的字
  14.          *  $1可以去取到第一组代表的那个重复的字
  15.          */
  16.         String s2 = "我我我喜欢编编编编编编编编编程程!";
  17.         System.out.println(s2.replaceAll("(.)\\1+", "$1"));
  18.         // 2、public String[] split(String regex):按照正则表达式匹配的内容进行分割字符串,返回一个字符串数组
  19.         // 需求1:请把 古力娜扎ai8888迪丽热巴999aa5566玛尔扎哈fbbhdjfn4156卡尔扎巴,中的人名获取出来
  20.         String s3 = "古力娜扎ai8888迪丽热巴999aa5566玛尔扎哈fbbhdjfn4156卡尔扎巴";
  21.         String[] names = s3.split("\\w+");
  22.         System.out.println(Arrays.toString(names));
  23.     }
  24. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

天津储鑫盛钢材现货供应商

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表