正则表达式

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)

大家都在看

  • Javaweb-JSP详解

    一、什么是JSP Java Server Pages:Java服务器端页面,和Servlet一样,用于动态web技术 最大的特点: 写JSP就像在写HTML 区别: HTML只给用…

    数据库 2023年6月16日
    092
  • MySQL函数学习(五)—–流程控制函数

    md函数笔记五 注:笔记旨在记录 五、MySQL 流程控制函数 0. 表 0.1 num表: 1. IF() — 条件判断 1.1. 函数: 1.2. sql示例: 2…

    数据库 2023年5月24日
    088
  • MySQL45讲之order工作原理

    本文介绍 order 的三种排序方式,全字段排序、rowid 排序和索引树排序,以及每种排序方式具体是如何工作的。 当使用 explain 查看执行计划时,如果 extra 中有 …

    数据库 2023年5月24日
    0121
  • Python丨听说这个地方的漫画不错,只用40行代码,给它全部爬下来

    前因后果 公司新来的小姐姐,超级喜欢看漫画,天天给我介绍,好烦~ 现在是2022年9月15日16点30,于是我决定, 五点下班前写个代码把她说的漫画全部爬下来,应付一下~ 再发篇文…

    数据库 2023年6月14日
    0118
  • SQL优化这5个极简法则,直接让查询原地起飞!

    SQL 作为关系型数据库的标准语言,是 IT 从业人员必不可少的技能之一。SQL 本身并不难学,编写查询语句也很容易,但是想要编写出能够高效运行的查询语句却有一定的难度。 查询优化…

    数据库 2023年5月24日
    082
  • java面试题总结

    1,集合类面试题 arraylist和linkedlist的区别?底层实现?手写实现?线程安全吗以及原因? hashmap的底层实现?put()执行过程?put null时的执行过…

    数据库 2023年6月11日
    091
  • Java 8的新特性还不了解?快进来!

    能坚持别人不能坚持的,才能拥有你想拥有的。关注 &#x7F16;&#x7A0B;&#x5927;&#x9053;,让我们一起成长 哈喽,大家好,我是…

    数据库 2023年6月11日
    082
  • 5000+字硬核干货!Redis 分布式集群部署实战

    原理: Redis集群采用一致性哈希槽的方式将集群中每个主节点都分配一定的哈希槽,对写入的数据进行哈希后分配到某个主节点进行存储。 集群使用公式(CRC16 key)& 1…

    数据库 2023年6月9日
    097
  • Redis锁相关

    Redis锁相关 君不见,高堂明镜悲白发,朝如青丝暮成雪。 背景:面试的时候被问到有哪些锁,很快脱口而出Volatile、Synchronized和ReentrantLock,也能…

    数据库 2023年6月14日
    079
  • 为知笔记迁移到印象笔记-从入门到放弃

    最新进展 已经放弃了,目前正在逐步把笔记迁移到本地,用icloud来同步。 为什么放弃迁移? 没有找到好的迁移方案,迁移过去文档不方便查找和使用 为什么放弃印象笔记? 1.主要使用…

    数据库 2023年6月9日
    093
  • DASCTF 冰墩墩

    SimpleFlow 一下子就能发现传了一个含有flag.txt的压缩包,需要密码,字典简单跑一下就发现是 <span class=”ne-text”>PaSsZiPW…

    数据库 2023年6月11日
    075
  • 面试必问之 CopyOnWriteArrayList,你了解多少?

    一、摘要 在介绍 CopyOnWriteArrayList 之前,我们一起先来看看如下方法执行结果,代码内容如下: public static void main(String[]…

    数据库 2023年6月14日
    089
  • jupyter使用虚拟环境

    为了在jupyter中使用pyTorch的虚拟环境,来记录一下怎么操作一、conda命令的使用因为使用的是jupyter,所有就使用Anaconda Prompt来创建虚拟环境(也…

    数据库 2023年6月14日
    083
  • [Mysql]null与真值

    SQL的逻辑运算使用的是三值逻辑,逻辑表达式的计算结果有三种可能, true, false, unknown 比较运算的表达式含 NULL时会产生 unknown结果,例如 SEL…

    数据库 2023年6月16日
    086
  • Maven常用命令

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

    数据库 2023年6月16日
    092
  • [Unity]如何解决带刚体的物体在墙角会穿墙的问题

    问题背景 当一个物体在两个带碰撞体的方块组成的墙角时,只要”挤一挤”就可以从墙角穿墙而过: 原因分析 根据【Unity】Rigidbody.velocity…

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