当前位置:网站首页>正则表达式
正则表达式
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个左括号以及与之匹配右括号之间的模式所匹配到的字符,依次类推
边栏推荐
- ASP.NET Core 6 Framework Revealing Instance Demonstration [30]: Develop REST API with Routing
- [Software Architecture Mode] The difference between MVVM mode and MVC mode
- Introduction to ADAS
- CTFshow,命令执行:web32
- Shell: Conditional test action
- PDMan-domestic free general database modeling tool (minimalist, beautiful)
- SkiaSharp's WPF self-painted five-ring bouncing ball (case version)
- 7. SAP ABAP OData 服务如何支持 $orderby (排序)操作
- Cross-domain network resource file download
- C语言程序设计50例(三)(经典收藏)
猜你喜欢

Mini Program Graduation Works WeChat Food Recipes Mini Program Graduation Design Finished Products (3) Background Functions

小程序毕设作品之微信美食菜谱小程序毕业设计成品(2)小程序功能

Opencv creates a window - cv.namedWindow()

Qt 支持HEIC/HEIF格式图片

The use of scrapy crawler framework

如何在IntellJ IDEA中批量修改文件换行符

WLAN networking experiment of AC and thin AP

Comprehensive experiment BGP

CTO strongly banning the use of the Calendar, that in what?

Small application project works WeChat gourmet recipes applet graduation design of finished product (1) the development profile
随机推荐
Dataset之mpg:mpg数据集的简介、下载、使用方法之详细攻略
redis
Py之yellowbrick:yellowbrick的简介、安装、使用方法之详细攻略
Google Earth Engine APP——15行代码搞定一个inspector高程监测APP
The use of scrapy crawler framework
WTM:ASP.NET Core快速开发利器!
MacOS下postgresql(pgsql)数据库密码为什么不需要填写或可以乱填写
可视化——Superset安装与部署
C language game - minesweeper
Taobao commodity details and details on taobao, senior upgrade version of the API
CTFshow,命令执行:web33
rpm和yum
什么是步进电机?40张图带你了解!
数仓分层简介(实时数仓架构)
rpm and yum
Opencv creates a window - cv.namedWindow()
Introduction to data warehouse layering (real-time data warehouse architecture)
怎么找出电脑隐藏的软件(如何清理电脑隐藏软件)
一文说明白ECDSA spec256k1 spec256r1 EdDSA ed25519千丝万缕的关系
【软件架构模式】MVVM模式和MVC模式区别