正则表达式

正则表达式

符合正则规范的表达式叫做正则表达式。正则表达式其实就是由文本和字符串组成字符串

(一)常用文档
字符 含义
× 字符x
// 反斜线字符
/t 制表符(水平制表)
/n 换行符
/r 回车符
/e 转义符
. 任意字符
字符类 含义
[a|b|c] a或b或c
[^abc] 任何字符,除了a、b或c
[a-zA-Z] a到z或A到Z(包含a、z、A、Z)
[a-d[m-p]] a到d或m到p
[a-z&&[def]] d或e或f(交集)
[a-z&&bc] a到z,除了b和c(减去)
a-z&&m-p a到z,除去m到p(减去)
预定义字符类 含义
. 任何字符
/d 数字,[0-9]
/D 非数字
/s 空白字符,[/t、/n、/x0B、/f、/r]
/S 非空白字符
/w 单词字符,[a-zA-Z 0-9]
/W 非单词字符
Greedy数量词 含义
x? x:一次或者一次也没有
x* x:零次或多次
x+ x:一次或多次
x{n} x:恰好n次
x{n,} x:至少n次
x{n,m} x:n到m次
Reluctant 数量词 含义
X?? X,一次或一次也没有
X*? X,零次或多次
X+? X,一次或多次
X{n}? X,恰好 n 次
X{n,}? X,至少 n 次
X{n,m}? X,至少 n 次,但是不超过 m 次
边界匹配器 含义
^ 行的开头
$ 行的结尾
/b 单词边界
/B 非单词边界
/A 输入的开头
/G 上一个匹配的结尾
/Z 输入的结尾,仅用于最后的结束符(如果有的话)
/z 输入的结尾
(二)替换字符串
//替换手机号
public class test01 {
    public static void main(String[] args) {
        String str = "王一13421643043";
        String regex = "(1\\d{2})(\\d{4})(\\d{4})";//正则表达式:一个中括号为一组,组内d{n}表示组内n个字符串
        str = str.replaceAll(regex, "$1****$3");//$n:第n组   $1****$3:保留第1组和第3组,中间的替换为****
        System.out.println(str);//王一134****3043
​
    }
}
(三)验证字符串

Pattern:代表正则表达式的匹配模式

Matcher:提供了对正则表达式的分组支持,以及对正则表达式的多次匹配支持

//验证QQ邮箱
public class test02 {
    public static void main(String[] args) {
        String str = "3871249382@qq.com";
        String regex = "\\d{5,10}@qq.com";//正则表达式:由5到10位的数字以及@qq.com组成
        boolean matches = str.matches(regex);//验证QQ邮箱是否符合正则表达式
        System.out.println(matches);//true
    }
}
(四)分割字符串
//分割地址
public class test03 {
    public static void main(String[] args) {
        String str = "F:\\_JY\\_QF\\知识点\\IMGS\\变量.png";
        String regex = "\\\\";//以\\为分割点
        String[] split = str.split(regex);//进行分割
        for (String s : split){
            System.out.println(s);
        }
    }
}
(五)爬取数据

Pattern:代表正则表达式的匹配模式

Matcher:提供了对正则表达式的分组支持,以及对正则表达式的多次匹配支持

//Pattern+Matcher 找到前端代码中的图片路径
public class test04 {
    public static void main(String[] args) {
        String str = "<img src = 'hhy/aaa.jpg'/><div><div/> <input type='image' src='submit.gif' /><img src = 'bbb.jpg'/>";
​
        //正则表达式字符串
        String regex = "<img\\s*\\bsrc\\b\\s*=\\s*('|\")?([^'\"\n\r\f>]+(\\.jpg)\\b)('|\")?/>";//对照上述文档,识别上述Src的字符串
​
        //正则表达式对象
        Pattern pattern = Pattern.compile(regex);
​
        //利用正则表达式对象解析字符串,返回解析对象
        Matcher matcher = pattern.matcher(str);
​
        //查询结果
        while (matcher.find()){
            String group = matcher.group(2);
            System.out.println(group);
        }
    }

总结:

正则表达式不需要写,但是需要能够会通过上述常用文档认出相关正则表达式含义

相关推荐

  1. 表达式

    2024-04-10 15:32:05       64 阅读
  2. 表达式

    2024-04-10 15:32:05       73 阅读
  3. 表达式

    2024-04-10 15:32:05       74 阅读
  4. 【Python】表达式

    2024-04-10 15:32:05       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-10 15:32:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-10 15:32:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-10 15:32:05       87 阅读
  4. Python语言-面向对象

    2024-04-10 15:32:05       96 阅读

热门阅读

  1. redis的过期策略和内存淘汰机制(redis篇)

    2024-04-10 15:32:05       41 阅读
  2. LeetCode-45. 跳跃游戏 II【贪心 数组 动态规划】

    2024-04-10 15:32:05       37 阅读
  3. 题目 2305: 等差数列

    2024-04-10 15:32:05       32 阅读
  4. 蓝桥杯之初等数论(一)

    2024-04-10 15:32:05       35 阅读
  5. PTA 三足鼎立

    2024-04-10 15:32:05       33 阅读
  6. 1354: 【C4】【搜索】【回溯】字母全排列

    2024-04-10 15:32:05       35 阅读
  7. 初识Linux:探索开源世界的大门

    2024-04-10 15:32:05       42 阅读
  8. 算法刷题day42

    2024-04-10 15:32:05       29 阅读
  9. Kotlin基础学习

    2024-04-10 15:32:05       38 阅读
  10. ORA-00257:archiver error.Connect internal only,until freed.

    2024-04-10 15:32:05       33 阅读
  11. ffmpeg视频转换 webp

    2024-04-10 15:32:05       37 阅读