当前位置:网站首页>正则表达式
正则表达式
2022-08-01 10:13:00 【miracle-boy】
目录
(1)介绍
正则表达式是一个可以被“有限状态自动机”接受的语言类。“有限状态自动机”,其拥有有限数量的状态,每个状态可以迁移到零个或多个状态,输入字串决定执行哪个状态的迁移。而常见的正则引擎,又被细分为DFA(确定性有限状态自动机)与NFA(非确定性有限状态自动机)。他们匹配输入的过程分别是:
DFA: 从起始状态开始,一个字符一个字符地读取输入串,并根据正则来一步步确定至下一个转移状态,直到匹配不上或走完整个输入
NFA:从起始状态开始,一个字符一个字符地读取输入串,并与正则表达式进行匹配,如果匹配不上,则进行回溯,尝试其他状态
由于NFA的执行过程存在回溯,所以其性能会劣于DFA,但它支持更多功能。大多数程序语言都使用了NFA作为正则引擎,其中也包括PHP使用的PCRE库。
(2)匹配字符
- . 匹配任意单个字符,不能匹配空行
- [] 匹配指定范围内的任意单个字符
- [^] 取反
- [:alnum:] 或 [0-9a-zA-Z]匹配数字或字符
- [:alpha:] 或 [a-zA-Z]
- [:upper:] 或 [A-Z]
- [:lower:] 或 [a-z]
- [:blank:] 空白字符(空格和制表符)
- [:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广)
- [:cntrl:] 不可打印的控制字符(退格、删除、警铃...)
- [:digit:] 十进制数字 或[0-9]
- [:xdigit:]十六进制数字
- [:graph:] 可打印的非空白字符
- [:print:] 可打印字符
- [:punct:] 标点符号
(3)配置次数
- * 匹配前面的字符任意次,包括0次,贪婪模式:尽可能长的匹配
- .* 任意前面长度的任意字符,不包括0次
- \? 匹配其前面的字符0 或 1次
- + 匹配其前面的字符至少1次
- {n} 匹配前面的字符n次
- {m,n} 匹配前面的字符至少m 次,至多n次
- {,n} 匹配前面的字符至多n次
- {n,} 匹配前面的字符至少n次
- (4)定位
- ^ 行首锚定,用于模式的最左侧
- $ 行尾锚定,用于模式的最右侧
- ^PATTERN$,用于模式匹配整行
- ^$ 空行
- ^[[:space:]].*$ 空白行
- < 或 \b 词首锚定,用于单词模式的左侧
- > 或 \b 词尾锚定;用于单词模式的右侧
- <PATTERN>
- 分组:()
- 后向引用:\1, \2, ...
- \1 表示从左侧起第一个左括号以及与之匹配右括号之间的模式所匹配到的字符
- \2 表示从左侧起第2个左括号以及与之匹配右括号之间的模式所匹配到的字符,依次类推
边栏推荐
- How to find out hidden computer software (how to clean up the computer software hidden)
- The first experience of Shengsi large model experience platform——Take the small model LeNet as an example
- Introduction and application of heap memory (including examples)
- 关于#SQL#的问题,如何解决?
- Py之yellowbrick:yellowbrick的简介、安装、使用方法之详细攻略
- EasyRecovery热门免费数据检测修复软件
- WTM:ASP.NET Core快速开发利器!
- 世界第4疯狂的科学家,在103岁生日那天去世了
- Visualization - Superset installation and deployment
- STM32入门开发 介绍IIC总线、读写AT24C02(EEPROM)(采用模拟时序)
猜你喜欢
随机推荐
What is a stepper motor?40 pictures to show you!
世界第4疯狂的科学家,在103岁生日那天去世了
How to Steal $100 Million from the Perfect Smart Contract
企业微信群:机器人定时提醒功能数据库配置化
Browser shortcut keys
RK3399平台开发系列讲解(内核入门篇)1.52、printk函数分析 - 其函数调用时候会关闭中断
招聘随想2022
Google Earth Engine APP——15行代码搞定一个inspector高程监测APP
7/31 训练日志
Dataset之mpg:mpg数据集的简介、下载、使用方法之详细攻略
WPF 截图控件之绘制箭头(五)「仿微信」
Android Security and Protection Policy
ModelArts-based object detection YOLOv3 practice [play with HUAWEI CLOUD]
C#/VB.NET 将PPT或PPTX转换为图像
ASP.NET Core 6框架揭秘实例演示[30]:利用路由开发REST API
JWT
ASP.NET Core 6 Framework Revealing Instance Demonstration [30]: Develop REST API with Routing
基于ModelArts的物体检测YOLOv3实践【玩转华为云】
ClickHouse多种安装方式
报告:想学AI的学生数量已涨200%,老师都不够用了









