当前位置:网站首页>正则表达式
正则表达式
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个左括号以及与之匹配右括号之间的模式所匹配到的字符,依次类推
边栏推荐
- slice、splice、split傻傻分不清
- How I secured 70,000 ETH and won a 6 million bug bounty
- 自定义类型——枚举、联合
- ModelArts-based object detection YOLOv3 practice [play with HUAWEI CLOUD]
- CTFshow,命令执行:web34、35、36
- STM32 personal notes - program run and fly
- MFC implementation road map navigation system
- 2022年7月31日--使用C#迈出第一步--使用C#中的数组和foreach语句来存储和循环访问数据序列
- VS“无法查找或打开PDB文件”是怎么回事?如何解决
- Dataset之mpg:mpg数据集的简介、下载、使用方法之详细攻略
猜你喜欢
shell脚本------条件测试 if语句和case分支语句
What is a stepper motor?40 pictures to show you!
SAP ABAP OData 服务如何支持 $orderby (排序)操作试读版
朴素贝叶斯--学习笔记--基本原理及代码实现
Android 安全与防护策略
WLAN networking experiment of AC and thin AP
Enterprise WeChat group: robot timing reminder function database configuration
已解决(pip安装库报错)Consider using the-- user option or check the permissions.
Change Servlet project to SSM project
WPF 截图控件之绘制箭头(五)「仿微信」
随机推荐
mysql login in cmd and basic operations of database and table
阿里腾讯面试一二
基于ModelArts的物体检测YOLOv3实践【玩转华为云】
[Cloud Residency Co-Creation] Huawei Cloud Global Scheduling Technology and Practice of Distributed Technology
2022年7月31日--使用C#迈出第一步--使用C#中的数组和foreach语句来存储和循环访问数据序列
MFC实现交通图导航系统
【cartographer ros】10: Delay and error analysis
【钛晨报】国家统计局:7月制造业PMI为49%;玖富旗下理财产品涉嫌欺诈,涉及390亿元;国内航线机票燃油附加费8月5日0时起下调
可视化——Superset安装与部署
【云驻共创】分布式技术之华为云全域调度技术与实践
Introduction and application of heap memory (including examples)
EasyRecovery热门免费数据检测修复软件
notes....
CTFshow,命令执行:web33
Enterprise WeChat group: robot timing reminder function database configuration
mysql在cmd的登录及数据库与表的基本操作
Message queue interview latest finishing (2022)
[Software Architecture Mode] The difference between MVVM mode and MVC mode
Google Earth Engine——给影像添加一个属性对于单景的时间序列并返回影像
50.【Application of dynamic two-dimensional array】