正则表达式

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/573892/

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

(0)

大家都在看

  • vi和vim文本编辑器

    vi和vim文本编辑器 vi和vim模式的相互切换 快捷键使用案例 拷贝当前行yy; 拷贝当前行向下的5行 5yy; 并粘贴(p) 删除当前行dd; 删除当前行向下的5行 5dd …

    Linux 2023年6月11日
    0105
  • maven安装及导入本地jar包

    一、maven的安装方法 1.去maven官网下载适合的版本 下载地址: 官方下载地址 2.下载后解压到任意目录 3.配置系统环境变量 M2_HOME ,值为maven解压后的目录…

    Linux 2023年6月14日
    0131
  • WPF 已知问题 Popup 吃掉 PreviewMouseDown 事件

    在 WPF 中,使用 Popup 也许会看到 PreviewMouseDown 事件被吃掉 因为 PreviewMouseDown 是 RoutingStrategy.Direct…

    Linux 2023年6月6日
    0130
  • Linux常用磁盘管理命令详解

    du du命令用于查看文件和目录磁盘的使用空间。 命令语法: du [&#x53C2;&#x6570;] [&#x6587;&#x4EF6;&amp…

    Linux 2023年5月27日
    0113
  • 快速掌握Linux三剑客命令使用

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月7日
    0102
  • linux 添加java环境

    将下载的jdk解压到/usr/local/下 设置软链接 在/etc/profile.d/java.sh 添加如下内容(建议在/etc/profile.d/添加环境变量) 生效配置…

    Linux 2023年6月8日
    067
  • C++ inline

    inline的坏处:若在一台内存有限的机器上,过度热衷inlining会造成程序体积太大,即使拥有虚拟内存,inline造成的代码膨胀也会导致额外的换页行为,降低指令高速缓存装置的…

    Linux 2023年6月7日
    0109
  • 云笔记本:一个Laxcus应用软件

    给大家展示一个第三方开发的应用软件:云笔记本。 这个作品来自一位Laxcus分布式应用软件开发者,目前已经通过Laxcus集群操作系统的兼容性测试。云笔记本的界面和功能,类似Win…

    Linux 2023年6月6日
    0137
  • JAVA设计模式-适配器模式

    JAVA设计模式-适配器模式 介绍 适配器模式是一种结构型模式,它主要解决接口之间的兼容问题。当我们需要使用某个类的接口时,但是这个类的接口目前并不符合我们使用需求,不能直接使用,…

    Linux 2023年6月6日
    0113
  • .Net Core下DllImport使用方法及扩展

    引言​ 在有时候的开发过程中,我们会遇到需要调用系统的API,不巧的是.Net Core可能没办法为我们提供相关的调用方式。那需要如何才能解决这个问题呢?​ 这时候我们就可能会考虑…

    Linux 2023年6月13日
    088
  • DHCP服务

    一、dhcp介绍 dhcp 应用层协议 动态主机配置协议 作用: 为主机动态分配tcp/ip参数(ip地址、掩码、网关、DNS服务器地址) Linux实现dhcp服务 软件: dh…

    Linux 2023年6月7日
    087
  • 解决微信Windows客户端无法播放视频问题

    问题描述 我的Windows端微信版本是3.6.0,更新后点开视频,没有播放按钮出现,并且过一会就会卡死,并且整个微信程序崩掉。 问题解决 后来发现,是微信客户端的 播放器插件问题…

    Linux 2023年6月14日
    0383
  • 让SpringBoot也用上Fluent Validator

    前言 在使用SpringBoot的时候经常需要对客户端传入的参数进行合法性的校验,校验的方法基本上都是使用SpringBoot提供的注解,有时候遇上注解不能满足需求的时候还需要在业…

    Linux 2023年6月14日
    094
  • short, int, long, long long各个类型的范围

    类型名称 字节数 取值范围 signed char 1 -2^7 ~ 2^7-1 -128~+127 short int 2 -2^14 ~ 2^14-1 -32768~+3276…

    Linux 2023年6月8日
    0112
  • LeetCode 907: 子数组的最小值之和-单调栈的运用 |Sum of Subarray Minimums-Fantasy use of Monotonic Stack

    Tags: #MonoStack #Stack Problem Description Given an array of integers arr, find the sum o…

    Linux 2023年6月13日
    076
  • jenkins 设置钉钉机器人+jenkins调用shell脚本使用钉钉机器人自定义发消息并通知指定人

    两种钉钉通知方式,一种是使用安装的钉钉插件来通知,但是这个不好定义通知内容,没办法控制发送条件,只要配置了,不管构建参数(分支,渠道,配置),都会发通知,第二种是使用脚本的方式来通…

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