正则表达式

1.正则表达式分类

正则表达式:REGEXP,REGular EXPression。
正则表达式分为两类:

  • Basic REGEXP(基本正则表达式)
  • Extended REGEXP(扩展正则表达式)

2.基本正则表达式

元字符

.           //任意单个字符
[]          //匹配指定单位外的任意单个字符
[^]         //匹配指定范围外的任意单个字符

匹配次数

*           //匹配其前面的任意单个字符任意次
.*          //任意长度的任意字符
\?          //匹配其前面的任意单个字符1次或0次
\+          //匹配其前面的任意单个字符至少一次
\{m,n\}     //匹配其前面的任意单个字符至少m次,至多n次

位置锚定

^           //锚定行首,此字符后面的任意单个字符必须出现在行首
$           //锚定行尾,此字符前面的任意单个字符必须出现在行尾
^$          //空白行
\<或\b 锚定词首,其后面的任意单个字符必须作为单词首部出现 \>&#x6216;\b        //&#x9501;&#x5B9A;&#x8BCD;&#x5C3E;&#xFF0C;&#x5176;&#x524D;&#x9762;&#x7684;&#x4EFB;&#x610F;&#x5355;&#x4E2A;&#x5B57;&#x7B26;&#x5FC5;&#x987B;&#x4F5C;&#x4E3A;&#x5355;&#x8BCD;&#x5C3E;&#x90E8;&#x51FA;&#x73B0;
</或\b>
\(\)
&#x4F8B;&#xFF1A;\(ab\)*
//&#x540E;&#x5411;&#x5F15;&#x7528;
    \1      //&#x5F15;&#x7528;&#x7B2C;&#x4E00;&#x4E2A;&#x5DE6;&#x62EC;&#x53F7;&#x4EE5;&#x53CA;&#x4E0E;&#x4E4B;&#x76F8;&#x5E94;&#x7684;&#x53F3;&#x62EC;&#x53F7;&#x6240;&#x5305;&#x62EC;&#x7684;&#x6240;&#x6709;&#x5185;&#x5BB9;
    \2      //&#x5F15;&#x7528;&#x7B2C;&#x4E8C;&#x4E2A;&#x5DE6;&#x62EC;&#x53F7;&#x4EE5;&#x53CA;&#x4E0E;&#x4E4B;&#x5BF9;&#x5E94;&#x7684;&#x53F3;&#x62EC;&#x53F7;&#x6240;&#x5305;&#x62EC;&#x7684;&#x6240;&#x6709;&#x5185;&#x5BB9;

示例:

//&#x8FC7;&#x6EE4;&#x4EFB;&#x610F;&#x5355;&#x4E2A;&#x5B57;&#x7B26;
[root@localhost zxr]# ls
1  2  3  4  5  6  7  8  9
[root@localhost zxr]# ls |grep '^.$'
1
2
3
4
5
6
7
8
9

//&#x5339;&#x914D;&#x6307;&#x5B9A;&#x8303;&#x56F4;&#x5185;&#x7684;&#x4EFB;&#x610F;&#x5355;&#x4E2A;&#x5B57;&#x7B26;
[root@localhost zxr]# ls |grep '^[15]$'
1
5
[root@localhost zxr]# ls |grep '^[1-3]$'
1
2
3

//&#x5339;&#x914D;&#x6307;&#x5B9A;&#x8303;&#x56F4;&#x5916;&#x7684;&#x4EFB;&#x610F;&#x5355;&#x4E2A;&#x5B57;&#x7B26;
[root@localhost zxr]# ls |grep '^[^123]$'
4
5
6
7
8
9

//&#x5339;&#x914D;&#x5176;&#x524D;&#x9762;&#x7684;&#x4EFB;&#x610F;&#x5355;&#x4E2A;&#x5B57;&#x7B26;&#x4EFB;&#x610F;&#x6B21;
[root@localhost zxr]# ls |grep '^abc*$'
abc
abccc
abccccccc

//&#x5339;&#x914D;&#x4EFB;&#x610F;&#x957F;&#x5EA6;&#x7684;&#x4EFB;&#x610F;&#x5B57;&#x7B26;
[root@localhost zxr]# ls |grep '^a.*bc$'
abbc
abc

[root@localhost zxr]# ls |grep '^ab.*c$'
abbbbbbbbbcccccccc
abbbbbcccccc
abbc
abbcc
abc
abccc
abccccccc

[root@localhost zxr]# ls |grep '^abc.*$'
abc
abccc
abccccccc

//&#x5339;&#x914D;&#x5176;&#x524D;&#x9762;&#x7684;&#x4EFB;&#x610F;&#x5355;&#x4E2A;&#x5B57;&#x7B26;1&#x6B21;&#x6216;&#x8005;0&#x6B21;
[root@localhost zxr]# ls | grep '^a\?b$'
ab
b

//&#x5339;&#x914D;&#x5176;&#x524D;&#x9762;&#x7684;&#x4EFB;&#x610F;&#x5355;&#x4E2A;&#x5B57;&#x7B26;&#x81F3;&#x5C11;m&#x6B21;&#xFF0C;&#x81F3;&#x591A;n&#x6B21;
[root@localhost zxr]# ls |grep '^a\+bc$'
aaaabc
abc

//&#x5339;&#x914D;&#x5176;&#x524D;&#x9762;&#x7684;&#x4EFB;&#x610F;&#x5355;&#x4E2A;&#x5B57;&#x7B26;&#x81F3;&#x5C11;m&#x6B21;&#xFF0C;&#x81F3;&#x591A;n&#x6B21;
[root@localhost zxr]# ls |grep '^a\{1,6\}bc$'
aaaabc
abc

//&#x4EE5;a&#x5F00;&#x5934;
[root@localhost zxr]# ls |grep '^a'
aaaabc
aabbbbbccccc
aabbcc
abbc
abbcc
abc
abccc

//&#x4EE5;c&#x7ED3;&#x5C3E;
[root@localhost zxr]# ls |grep 'c$'
aaaabbbccc
aaaabc
abc
abccc
abccccccc

//&#x951A;&#x5B9A;&#x8BCD;&#x9996;
[root@localhost zxr]# cat a
awswswsw
qweasd
admin
alog
loga
[root@localhost zxr]# grep '\<a' a awswswsw admin alog 锚定词尾 [root@localhost zxr]# grep 'a\>' a
loga

//&#x951A;&#x5B9A;&#x8BCD;&#x9996;&#xFF0C;&#x548C;&#x8BCD;&#x5C3E;
[root@localhost zxr]# grep '\<admin\>' a
admin
</admin\></a'>

3.扩展正则表达式

字符匹配

.       //&#x5339;&#x914D;&#x4EFB;&#x610F;&#x5355;&#x4E2A;&#x5B57;&#x7B26;
[]      //&#x5339;&#x914D;&#x6307;&#x5B9A;&#x8303;&#x56F4;&#x5185;&#x7684;&#x4EFB;&#x610F;&#x5355;&#x4E2A;&#x5B57;&#x7B26;
[^]     //&#x5339;&#x914D;&#x6307;&#x5B9A;&#x8303;&#x56F4;&#x5916;&#x7684;&#x4EFB;&#x610F;&#x5355;&#x4E2A;&#x5B57;&#x7B26;

&#x5355;&#x4E2A;&#x5B57;&#x7B26;&#x5339;&#x914D;&#x76F8;&#x5173;
[[:alpha:]]  &#x8868;&#x793A;&#x4EFB;&#x610F;&#x5927;&#x5C0F;&#x5199;&#x5B57;&#x6BCD;&#x3002;
[[:lower:]]  &#x8868;&#x793A;&#x4EFB;&#x610F;&#x5C0F;&#x5199;&#x5B57;&#x6BCD;&#x3002;
[[:upper:]]  &#x8868;&#x793A;&#x4EFB;&#x610F;&#x5927;&#x5199;&#x5B57;&#x6BCD;&#x3002;
[[:digit:]]  &#x8868;&#x793A;0&#x5230;9&#x4E4B;&#x95F4;&#x7684;&#x4EFB;&#x610F;&#x5355;&#x4E2A;&#x6570;&#x5B57;&#xFF08;&#x5305;&#x62EC;0&#x548C;9&#xFF09;&#x3002;
[[:alnum:]]  &#x8868;&#x793A;&#x4EFB;&#x610F;&#x6570;&#x5B57;&#x6216;&#x5B57;&#x6BCD;&#x3002;
[[:space:]]  &#x8868;&#x793A;&#x4EFB;&#x610F;&#x7A7A;&#x767D;&#x5B57;&#x7B26;&#xFF0C;&#x5305;&#x62EC;"&#x7A7A;&#x683C;"&#x3001;"tab&#x952E;"&#x7B49;&#x3002;
[[:punct:]]  &#x8868;&#x793A;&#x4EFB;&#x610F;&#x6807;&#x70B9;&#x7B26;&#x53F7;&#x3002;
[^[:alpha:]]  &#x8868;&#x793A;&#x5355;&#x4E2A;&#x975E;&#x5B57;&#x6BCD;&#x5B57;&#x7B26;&#x3002;
[^[:lower:]]  &#x8868;&#x793A;&#x5355;&#x4E2A;&#x975E;&#x5C0F;&#x5199;&#x5B57;&#x6BCD;&#x5B57;&#x7B26;&#x3002;
[^[:upper:]]  &#x8868;&#x793A;&#x5355;&#x4E2A;&#x975E;&#x5927;&#x5199;&#x5B57;&#x6BCD;&#x5B57;&#x7B26;&#x3002;
[^[:digit:]]  &#x8868;&#x793A;&#x5355;&#x4E2A;&#x975E;&#x6570;&#x5B57;&#x5B57;&#x7B26;&#x3002;
[^[:alnum:]]  &#x8868;&#x793A;&#x5355;&#x4E2A;&#x975E;&#x6570;&#x5B57;&#x975E;&#x5B57;&#x6BCD;&#x5B57;&#x7B26;&#x3002;
[^[:space:]]  &#x8868;&#x793A;&#x5355;&#x4E2A;&#x975E;&#x7A7A;&#x767D;&#x5B57;&#x7B26;&#x3002;
[^[:punct:]]  &#x8868;&#x793A;&#x5355;&#x4E2A;&#x975E;&#x6807;&#x70B9;&#x7B26;&#x53F7;&#x5B57;&#x7B26;&#x3002;
[0-9]&#x4E0E;[[:digit:]]&#x7B49;&#x6548;&#x3002;
[a-z]&#x4E0E;[[:lower:]]&#x7B49;&#x6548;&#x3002;
[A-Z]&#x4E0E;[[:upper:]]&#x7B49;&#x6548;&#x3002;
[a-zA-Z]&#x4E0E;[[:alpha:]]&#x7B49;&#x6548;&#x3002;
[a-zA-Z0-9]&#x4E0E;[[:alnum:]]&#x7B49;&#x6548;&#x3002;
[^0-9]&#x4E0E;[^[:digit:]]&#x7B49;&#x6548;&#x3002;
[^a-z]&#x4E0E;[^[:lower:]]&#x7B49;&#x6548;&#x3002;
[^A-Z]&#x4E0E;[^[:upper:]]&#x7B49;&#x6548;
[^a-zA-Z]&#x4E0E;[^[:alpha:]]&#x7B49;&#x6548;
[^a-zA-Z0-9]&#x4E0E;[^[:alnum:]]&#x7B49;&#x6548;

次数匹配

*       //&#x5339;&#x914D;&#x5176;&#x524D;&#x9762;&#x7684;&#x4EFB;&#x610F;&#x5355;&#x4E2A;&#x5B57;&#x7B26;&#x4EFB;&#x610F;&#x6B21;
?       //&#x5339;&#x914D;&#x5176;&#x524D;&#x9762;&#x7684;&#x4EFB;&#x610F;&#x5355;&#x4E2A;&#x5B57;&#x7B26;1&#x6B21;&#x6216;0&#x6B21;
+       //&#x5339;&#x914D;&#x5176;&#x524D;&#x9762;&#x7684;&#x4EFB;&#x610F;&#x5355;&#x4E2A;&#x5B57;&#x7B26;&#x81F3;&#x5C11;1&#x6B21;
{m,n}   //&#x5339;&#x914D;&#x5176;&#x524D;&#x9762;&#x7684;&#x4EFB;&#x610F;&#x5355;&#x4E2A;&#x5B57;&#x7B26;&#x81F3;&#x5C11;m&#x6B21;&#xFF0C;&#x81F3;&#x591A;n&#x6B21;

位置锚定

^       //&#x951A;&#x5B9A;&#x884C;&#x9996;&#xFF0C;&#x6B64;&#x5B57;&#x7B26;&#x540E;&#x9762;&#x7684;&#x4EFB;&#x610F;&#x5355;&#x4E2A;&#x5B57;&#x7B26;&#x5FC5;&#x987B;&#x51FA;&#x73B0;&#x5728;&#x884C;&#x9996;
$       //&#x951A;&#x5B9A;&#x884C;&#x5C3E;&#xFF0C;&#x6B64;&#x5B57;&#x7B26;&#x524D;&#x9762;&#x7684;&#x4EFB;&#x610F;&#x5355;&#x4E2A;&#x5B57;&#x7B26;&#x5FC5;&#x987B;&#x51FA;&#x73B0;&#x5728;&#x884C;&#x5C3E;
^$      //&#x7A7A;&#x767D;&#x884C;
\<或\b 锚定词首,其后面的任意单个字符必须作为单词首部出现 \>&#x6216;\b       //&#x951A;&#x5B9A;&#x8BCD;&#x5C3E;&#xFF0C;&#x5176;&#x524D;&#x9762;&#x7684;&#x4EFB;&#x610F;&#x5355;&#x4E2A;&#x5B57;&#x7B26;&#x5FC5;&#x987B;&#x4F5C;&#x4E3A;&#x5355;&#x8BCD;&#x5C3E;&#x90E8;&#x51FA;&#x73B0;
</或\b>
()      //&#x5206;&#x7EC4;
\1&#xFF0C;\2&#xFF0C;\3&#xFF0C;....

&#x4F8B;&#xFF1A;(ab)*
//&#x540E;&#x5411;&#x5F15;&#x7528;
    \1      //&#x5F15;&#x7528;&#x7B2C;&#x4E00;&#x4E2A;&#x5DE6;&#x62EC;&#x53F7;&#x4EE5;&#x53CA;&#x4E0E;&#x4E4B;&#x5BF9;&#x5E94;&#x7684;&#x53F3;&#x62EC;&#x53F7;&#x6240;&#x5305;&#x62EC;&#x7684;&#x6240;&#x6709;&#x5185;&#x5BB9;
    \2      //&#x5F15;&#x7528;&#x7B2C;&#x4E8C;&#x4E2A;&#x5DE6;&#x62EC;&#x53F7;&#x4EE5;&#x53CA;&#x4E0E;&#x4E4B;&#x5BF9;&#x5E94;&#x7684;&#x53F3;&#x62EC;&#x53F7;&#x6240;&#x5305;&#x62EC;&#x7684;&#x6240;&#x6709;&#x5185;&#x5BB9;
//&#x6216;&#x8005;
    |      //or &#x9ED8;&#x8BA4;&#x5339;&#x914D;&#xFF5C;&#x7684;&#x6574;&#x4E2A;&#x5DE6;&#x4FA7;&#x6216;&#x8005;&#x6574;&#x4E2A;&#x53F3;&#x4FA7;&#x7684;&#x5185;&#x5BB9;
           //&#x4F8B;&#xFF1A;C|cat&#x8868;&#x793A;C&#x6216;&#x8005;cat&#xFF0C;&#x8981;&#x60F3;&#x8868;&#x793A;Cat&#x6216;&#x8005;cat&#x5219;&#x9700;&#x8981;&#x4F7F;&#x7528;&#x5206;&#x7EC4;&#xFF0C;&#x5982;(C|c)at

Original: https://www.cnblogs.com/Their-own/p/16694730.html
Author: 事愿人为
Title: 正则表达式

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/613149/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Maven常用命令

    一、Maven常用命令及其介绍 mvn clean 对项目进行清理,删除target目录下编译的内容 mvn compile 编译项目源代码 mvn test 对项目进行运行测试 …

    数据库 2023年6月16日
    080
  • Redis进阶(一)

    通过简单的KV数据库理解Redis 分为访问模块,操作模块,索引模块,存储模块 底层数据结构 除了String类型,其他类型都是一个键对应一个集合,键值对的存储结构采用哈希表 哈希…

    数据库 2023年6月16日
    074
  • MySQL数据库-数据表(上)

    数据表的基本操作. MySQL 数据库支持多种数据类型,大致可以分为 3 类:数值类型、日期和时间类型、字符串(字符)类型。 (1)数值类型 数值类型用于存储数字型数据,这些类型包…

    数据库 2023年6月11日
    078
  • BFS与DFS套路总结

    概述 深度优先遍历和广度优先搜索和广度优先搜索是解决图问题最常见的方式,并且在leetcode中有许多相关的变体,但万变不离其宗,其本质结构或者算法框架时固定的,因此本文BFS和D…

    数据库 2023年6月11日
    096
  • 软件测试基础理论

    软件基础的理论 一, 什么是软件产品 它是一个逻辑产品,没有实体,包括程序,文档和数据,需要通过终端设备才能体现出来功能和作用 二, 软件产品的中间过程文档 客户需求 &#…

    数据库 2023年6月16日
    087
  • MySQL45讲-2-一条SQL更新语句是如何执行的?

    前面我们了解了SQL查询语句是如何执行的,一条SQL查询语句的过程需要经过连接器、分析器、优化器、执行器等功能模块,最终到达存储引擎。 在MySQL中,可以恢复到半个月内的任何一个…

    数据库 2023年5月24日
    081
  • 爬虫基础

    1.爬虫是什么? 爬虫:一段自动抓取互联网信息的程序,从互联网上抓取对于我们有价值的信息。 2.爬虫原理 _3.第一个爬虫程序 _ 1.扒取网页 : 扒取网页和基本代码 首先我们调…

    数据库 2023年6月11日
    064
  • 5、Idea同时选择多处光标进行编辑

    1、按住Alt+Shift,然后用鼠标左键点击文本,可以让光标在多个位置出现2、每个光标都会同时输入你正在输入的文本3、ESC退出 搜索 复制 Original: https://…

    数据库 2023年6月6日
    082
  • 多线程

    public class 多线程 { static boolean flag = true; static class t1 implements Runnable{ @Overr…

    数据库 2023年6月16日
    086
  • Java架构师电商项目(220h):1-1 整体架构概述

    2022 Flag:学完这门 220h Java架构师电商项目视频课学习笔记将持续更新…… ; 大型网站特点 高并发 高可用 大数据 迭代周期短 用户量庞大…

    数据库 2023年6月6日
    078
  • 老板:把系统从单体架构升级到集群架构!

    首发于公众号:BiggerBoy 如题,本文针对工作中实际经验,整理了把一个单体架构的系统升级成集群架构需要做的准备工作,以及为集群架构的升级做指导方针。 本文首先分析了单体架构存…

    数据库 2023年6月11日
    070
  • 线程池系列二:一张动图,彻底懂了execute和submit

    ​我们知道线程池通过execute方法执行提交的Runnable任务,但Runnable只是执行任务,没有返回任何信息。 【线程池原理:线程池原来是个外包公司,打工人我悟了】 若是…

    数据库 2023年6月6日
    0102
  • ReentrantLock 公平锁源码 第1篇

    ReentrantLock 1 这篇还是接着ReentrantLock的公平锁,没看过第0篇的可以先去看上一篇https://www.cnblogs.com/sunankang/p…

    数据库 2023年6月16日
    087
  • docker-compose部署rocketmq

    docker-compose安装: Ubuntu下载docker-compose文件 sudo&#xA0;curl&#xA0;-L&#xA0;https:/…

    数据库 2023年6月11日
    069
  • SpringBoot快速入门

    虽然我的工作中更多的是与数据库打交道,但是作为一个 Coder,我觉得掌握前后端的 Web技术来说是非常有必要的。 不仅可以帮助我们在工作中更好的理解其他岗位与你对接的人他的工作痛…

    数据库 2023年6月11日
    063
  • MySQL系统安装与部署

    数据库版本标准化 1.确认Supported Platforms https://www.mysql.com/support/ 2.确认安装版本 推荐:5.7.22 ,8.0.20…

    数据库 2023年5月24日
    074
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球