正则表达式

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)

大家都在看

  • 如何使用yum来下载RPM包而不进行安装

    yum是基于Red Hat的系统(如CentOS、Fedora、RHEl)上的默认包管理器。使用yum,你可以安装或者更新一个RPM包,并且他会自动解决包依赖关系。但是如果你只想将…

    Linux 2023年6月6日
    0152
  • 如何使用 Javascript 将图标字体渲染为图片

    前言 在软件开发中肯定要用到图标,比如下图的 Groove 音乐中就用到了许多图标。一种获取这些图标的方法是把 Groove 音乐截个图,然后熟练地开启 Photoshop,开始抠…

    Linux 2023年6月7日
    0104
  • Vue3 框架基础随笔 (一)

    Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。 Vue可以使用简单的代码实现一个单页面应用。 基本格式 Vue通过模板语法来声明式的将数据渲…

    Linux 2023年6月14日
    077
  • 【XML】学习笔记第二章-dtd

    XML-DTD DTD语句 基本声明语句 引用外部DTD DTD元素 四种元素类型 元素定义关键字 修饰符号 DTD中的属性 属性修饰 属性类型 DTD中的实体和符号 符号 坑 X…

    Linux 2023年6月14日
    0111
  • [转] OSDI, SOSP与美国著名计算机系的调查报告

    看到一个很久之前的文章,重新排版后转发一下,希望能带来一些帮助;文章有时效性,出现的数据多为历史数据。资源来源自网络,侵删。 序言 按照USnews的分类,Computer Sci…

    Linux 2023年6月13日
    097
  • Linux 磁盘挂载

    具体操作是: 1.先对磁盘进行格式化; 挂载磁盘到需要的挂载点; 3.添加分区启动表 1、首先查看系统中磁盘信息 命令为:fdisk -l 2、格式化要挂载的磁盘 格式化命令为:m…

    Linux 2023年6月7日
    084
  • Linux 配置Java环境变量

    前言:请各大网友尊重本人原创知识分享,谨记本人博客: 南国以南i 注:目前在官网下载的时候需要登陆,这边分享一个账号,方便下载 账号:2696671285@qq.com密码:Ora…

    Linux 2023年6月14日
    072
  • ELK 脚本自动化删除索引

    kibana有自带接口,可通过自带的API接口 通过传参来达到删除索引的目的。 删除15天前的索引 curl -XDELETE "http://10.228.81.161…

    Linux 2023年6月8日
    071
  • 文本操作find cut sort wc sed awk

    文本操作 查找文件: # find 大概位置 以名字查找 名字 find /etc/ -name i18n find /etc/ -name 70* find /etc/ -nam…

    Linux 2023年6月11日
    090
  • Android 图片设置圆角

    Android 开发中,经常需要对图片进行二次处理,比如添加圆角效果 或 显示圆形图片; 通过第三方框架 Glide 设置圆角效果; 写法1: RequestOptions opt…

    Linux 2023年6月13日
    075
  • python 对文件操作

    实现对文件的简单操作 #!/usr/bin/env python -*- coding:utf-8 -*- def Find(class_name): class_list = […

    Linux 2023年6月13日
    0114
  • Shell脚本编程中的几个问题

    条件语句 正确的写法: if [ $1 = "-f" ] #注意这里,前后方括号和中间的内容之间必须有空格! then commands fi 错误的写法: i…

    Linux 2023年6月14日
    069
  • Failed to configure a DataSource ‘url’ attribute问题解决

    才写了一行代码又报错了.. *************************** APPLICATION FAILED TO START ********************…

    Linux 2023年6月13日
    077
  • Redis连接出现Error: Connection reset by peer的问题是由于使用Redis的安全模式

    现在网上一查出现安全模式的连接,基本都是要关闭服务端的操作,其实这种方式是不正确的,最有效的解决方式是使用stunnel进行安全模式的连接。 我碰到的问题是微软云(其实我不想用!)…

    Linux 2023年5月28日
    092
  • Unity中Button的一些基础用法

    Button的功能探究 Interactable(是否可交互) 可交互简单来说所指的是按钮能否被点击,有true和false两种状态 public Button testButto…

    Linux 2023年6月7日
    0106
  • 通过启动脚本控制PHP-FPM开关

    vi /etc/init.d/php-fpm 复制粘贴以下内容: ! /bin/sh Comments to support chkconfig on CentOSchkconfi…

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