资讯专栏INFORMATION COLUMN

正则表达式的规则及应用

jzzlee / 2635人阅读

摘要:第三阶段常见对象的学习正则表达式一正则表达式概述简单概述就是符合一定规则的字符串常见规则字符字符。举例表示字符反斜线字符。

第三阶段 JAVA常见对象的学习 正则表达式 (一) 正则表达式概述 (1) 简单概述

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

(2) 常见规则
A:字符

x 字符 x。举例:"a"表示字符a
 反斜线字符。

 新行(换行)符 ("u000A") 

 回车符 ("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:边界匹配器

^ 行的开头 
$ 行的结尾 
 单词边界
就是不是单词字符的地方。
举例: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 = "w{3}";

        //把规则编译成模式对象
        Pattern p = Pattern.compile(regex);
        //通过模式对象得到匹配器对象
        Matcher m = p.matcher(s);

        while (m.find()){
            System.out.println(m.group());
        }
    }
}

//运行结果
hao
hao
xue
结尾:

如果内容中有什么不足,或者错误的地方,欢迎大家给我留言提出意见, 蟹蟹大家 !^_^

如果能帮到你的话,那就来关注我吧!(系列文章均会在公众号第一时间更新)

在这里的我们素不相识,却都在为了自己的梦而努力 ❤

一个坚持推送原创Java技术的公众号:理想二旬不止

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/74969.html

相关文章

  • 【从0到1】分步实现一个出生日期正则达式(JavaScript)

    摘要:简言在表单验证中,经常会用正则表达式做出生日期校验。声明本文目的是为了阐述如何编写一个正则表达式的过程。综上所述,正则表达式是强大的,但并不是万能的,因此不要过份地依赖和滥用正则。 简言 在表单验证中,经常会用正则表达式做出生日期校验。本文把出生日期分割成几个部分,分步地介绍了实现一个出生日期校验的完整过程。相信您在理解了本篇的内容后,对如何编写和如何应用正则表达式会有进一步的理解和体...

    shaonbean 评论0 收藏0
  • 邮箱/邮件地址正则达式分析(JavaScript,email,regex)

    摘要:简言在做用户注册时,常会用到邮箱邮件地址的正则表达式。另一个问题是邮件用户名不能包括中文。以上为三胖对邮箱址正则表达式的理解和分析,如有不足请大家予以指正。邮件地址正则表达式度空间 简言 在做用户注册时,常会用到邮箱/邮件地址的正则表达式。本文列举了几种方案,大家可以根据自己的项目情况,选择最适合的方案。 showImg(https://segmentfault.com/img/rem...

    Miracle_lihb 评论0 收藏0
  • nginx配置location总结rewrite规则写法

    摘要:语法如果相对域名或参数字符串起作用,可以使用全局变量匹配,也可以使用反向代理。不能返回限速,可以通过指令设置如果请求的文件名不存在,则反向代理到。 1. location正则写法 一个示例: location = / { # 精确匹配 / ,主机名后面不能带任何字符串 [ configuration A ] } location / { # 因为所有的地址都以 / 开...

    zhouzhou 评论0 收藏0
  • 正则达式详解实战

    摘要:如果你还没正式开始正则表达式,请快速浏览跳过本章节。就是一个等同于但更简略的正则表达式。如果想查找全部,就要加标识全局匹配规则正则表达式搜索字符串指定的值,从而去匹配字符串。正则表达式都是用来操作字符串的。 正则表达式 Create by jsliang on 2018-11-14 10:41:20 Recently revised in 2018-11-19 08:46:37 ...

    simon_chen 评论0 收藏0
  • nginx配置location总结rewrite规则写法

    摘要:语法如果相对域名或参数字符串起作用,可以使用全局变量匹配,也可以使用反向代理。不能返回限速,可以通过指令设置如果请求的文件名不存在,则反向代理到。 location正则写法 一个示例: location = / { # 精确匹配 / ,主机名后面不能带任何字符串 [ configuration A ] } location / { # 因为所有的地址都以 / 开...

    hiyang 评论0 收藏0

发表评论

0条评论

jzzlee

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<