前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第三阶段-Java常见对象:【第七章 正则表达式】

第三阶段-Java常见对象:【第七章 正则表达式】

作者头像
BWH_Steven
发布2019-08-09 15:50:03
4290
发布2019-08-09 15:50:03
举报

(一)

正则表达式

(一) 正则表达式概述

(1) 简单概述

就是符合一定规则的字符串

(2) 常见规则
  A:字符
  
  x 字符 x。举例:'a'表示字符a
  \ 反斜线字符。
  \n 新行(换行)符 ('\u000A') 
  \r 回车符 ('\u000D')
  
     
  B:字符类
  
  [abc] a、b 或 c(简单类) 
  [^abc] 任何字符,除了 a、b 或 c(否定) 
  [a-zA-Z] a到z 或 A到Z,两头的字母包括在内(范围) 
  [0-9] 0到9的字符都包括
  
     
  C:预定义字符类
  
  . 任何字符。我的就是.字符本身,怎么表示呢 \.
  \d 数字:[0-9]
  \w 单词字符:[a-zA-Z_0-9]
  在正则表达式里面组成单词的东西必须有这些东西组成
  
   
  D:边界匹配器
  
  ^ 行的开头 
  $ 行的结尾 
  \b 单词边界
  就是不是单词字符的地方。
  举例:hello world?haha;xixi
  
     
  
  E:Greedy 数量词 
  
  X? X,一次或一次也没有
  X* X,零次或多次
  X+ X,一次或多次
  X{n} X,恰好 n 次 
  X{n,} X,至少 n 次 
  X{n,m} X,至少 n 次,但是不超过 m 次 
(3) 常见功能
  //判断功能
  String类的public boolean matches(String regex)
      
  //分割功能
  String类的public String[] split(String regex)
      
  //替换功能
  String类的public String replaceAll(String regex,String replacement)
      
  //获取功能
  Pattern和Matcher
  Pattern p = Pattern.compile("a*b");
  Matcher m = p.matcher("aaaaab");
      
  find():查找存不存在
  group():获取刚才查找过的数据

正则表达式是非常强大的,我们通过几个简单的例子来看一下正则表达式的应用

(二) 正则表达式的应用

(1) 判断功能以及正则表达式——验证邮箱格式案例
  import java.util.Scanner;
  
  public class RegexDemo {
      public static void main(String[] args) {
          Scanner sc = new Scanner(System.in);
          System.out.println("请输入你的邮箱");
          String email = sc.nextLine();
  
  //定义邮箱规则
  //"[a-zA-Z_0-9]+@[a-zA-Z_0-9]{2,6}(\\.[a-zA-Z_0-9]{2,3})+"
  //简化后
          String regex = "\\w+@\\w{2,6}(\\.\\w{2,3}+)";
          boolean flag = email.matches(regex);
          System.out.println(flag);
      }
  }
(2) 拆分功能——好友年龄范围限制
  import java.util.Scanner;
  
  /*
  *  分割功能
  *          String类的 public String[] split(String regex)
  *          根据正则表达式的匹配拆分此字符串
  *  举例:
  *          社交软件中
  *          搜索好友:
  *              性别:女
  *              年龄:18-24
  */
  public class RegexDemo {
      public static void main(String[] args) {
          String ages = "18-24";
  
  //定义规则
          String regex = "-";
  
  //调用方法
          String[] strArray = ages.split(regex);
  
  //得到int类型
          int StartAge = Integer.parseInt(strArray[0]);
          int EndAge = Integer.parseInt(strArray[1]);
  
          Scanner sc = new Scanner(System.in);
          System.out.println("请输入你的年龄");
          int age = sc.nextInt();
          if (age >= StartAge && age <= EndAge){
              System.out.println("确认过眼神,我遇上对的人!");
          }else{
              System.out.println("可惜不是你,陪我到最后!");
          }
      }
  }
(3) 把字符串中的数字排序
  import java.util.Arrays;
  
  public class RegexDemo2 {
      public static void main(String[] args) {
          String s = "22 33 55 88 66 11";
          String[] strArray = s.split(" ");
  
  //把字符串数字转换成int数组
          int[] arr = new int[strArray.length];
          for (int x = 0; x < arr.length; x++) {
              arr[x] = Integer.parseInt(strArray[x]);
          }
          Arrays.sort(arr);
  
  //把排序后的int数组再组装成一个字符串
          StringBuilder sb = new StringBuilder();
          for (int x = 0; x < arr.length; x++) {
              sb.append(arr[x]).append(" ");
          }
  
          String result = sb.toString().trim();
          System.out.println("result: " + result);
      }
  }
  
  //运行结果
  result: 11 22 33 55 66 88
(4) 替换功能
  package cn.bwh_03_RegexReplaceAll;
  
  public class RegexDemo {
      public static void main(String[] args) {
          String s1 = "hello123456world";
  
  //所有数字用*给替换
          String regex = "\\d";
          String s2 = "*";
  
          String result = s1.replaceAll(regex, s2);
          System.out.println(result);
      }
  }
  
  //运行结果
  hello******world
(5) 获取字符串中由3个字符组成的单词
  import java.util.regex.Matcher;
  import java.util.regex.Pattern;
  
  public class RegexDemo {
      public static void main(String[] args) {
          String s = "hao hao xue xi tian tian xiang shang";
  
  //规则
          String regex = "\\b\\w{3}\\b";
  
  //把规则编译成模式对象
          Pattern p = Pattern.compile(regex);
  //通过模式对象得到匹配器对象
          Matcher m = p.matcher(s);
  
          while (m.find()){
              System.out.println(m.group());
          }
      }
  }
  
  //运行结果
  hao
  hao
  xue
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 理想二旬不止 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • (一) 正则表达式概述
    • (1) 简单概述
      • (2) 常见规则
        • (3) 常见功能
        • (二) 正则表达式的应用
          • (1) 判断功能以及正则表达式——验证邮箱格式案例
            • (2) 拆分功能——好友年龄范围限制
              • (3) 把字符串中的数字排序
                • (4) 替换功能
                  • (5) 获取字符串中由3个字符组成的单词
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档