正则表达式Java的使用

概述

  正则表达式,正确规则的表达式,指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。

正则表达式的组成规则

  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 单词边界
  就是不是单词字符的地方。
  E:Greedy 数量词
  X? X,一次或一次也没有 比如""空串 就是没有
  X* X,零次或多次 大于等于1次 都算多次
  X+ X,一次或多次
  X{n} X,恰好 n 次
  X{n,} X,至少 n 次
  X{n,m} X,至少 n 次,但是不超过 m 次
  
  
  举个例子,检验邮箱,邮箱格式为6 ~18 个字符,可使用字母、数字、下划线,需以字母开头,之后是@,3到6个字符,可以是数字或者小写字母,
结尾必须是 .com或.cn或.net或.org

"[a-zA-Z]\\w{5,17}@[0-9a-z]{3,6}\\.(0rg|cn|net|com)"
正则表达式的判断功能

  String类的功能:public boolean matches(String regex)

String s = "[a-zA-Z]\\w{5,17}@[0-9a-z]{3,6}\\.(0rg|cn|net|com)";
        String email = "abc123@163.com";
        boolean bo = email.matches(s);
        System.out.println(bo);
输出:true
正则表达式的分割功能split()方法

  String类的功能:public String[] split(String regex)

  演示案例:我有如下一个字符串:”91das27 dsad46dsad38das50”,去除数字间的字母

		String s = "91das27dsad46dsad38das50";
        System.out.println(s);
        String[] s1 = s.split("[a-z]+");
        System.out.println(Arrays.toString(s1));
 输出:
 91das27dsad46dsad38das50
[91, 27, 46, 38, 50]
正则表达式的替换功能

  public String replaceAll(String regex,String replacement)

案例:论坛发表帖子,帖子中需要将数字替换为"*"

 		String s = "今年我国的GDP为135万亿人民币,增速为9.8%。";
        String regex = "[0-9]+";
        String s1 = s.replaceAll(regex,"*");
        System.out.println(s1);
输出:今年我国的GDP为*万亿人民币,增速为*.*%。
Pattern和Matcher的概述

  正则的获取功能需要使用的类

  A:Pattern和Matcher的概述
  B:模式和匹配器的典型调用顺序

Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();

  正则表达式的获取功能
  Pattern和Matcher的结合使用
  使用的是 find()方法 和 group()方法 注意一定要先使用find()方法先找到 才能用group()方法获取出来
  
案例:获取下面这个字符串中由三个字符组成的单词
da jia ting wo shuo,jin tian yao xia yu,bu shang wan zi xi,gao xing bu?

		String str="da jia ting wo shuo, jin tian yao xia yu, bu shang wan zi xi, gao xing bu?";
        String regex = "\\b[a-z]{3}\\b";
        Pattern p = Pattern.compile(regex);
        Matcher m = p.matcher(str);
        while(m.find()){
            String s = m.group();
            System.out.print(s+" ");
输出:jia jin yao xia wan gao 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值