PHP.相关技术.正则表达式
学习git的时候正好需要这方面的知识,刚好自己也有些知识点有些模糊了,复习一遍。
正则表达式是什么?
- 正则表达式就是一个匹配的模式
- 正则表达式本身就是一个字符串(有一些语法规则,特殊字符)
正则表达式概念简介
主要分为 定界符
, 原子
, 元字符
, 模式修正符
- 定界符:顾名思义,就是模式表达式的界限,如
/aaa/
,这个//
就是定界符。正则表达式写在定界符中 - 原子:要寻找的字符,在一个模式表达式中,至少有一个原子
- 元字符:不能单独使用,用于修饰原子,扩展原子功能和限制原子功能
- 模式修正符:对模式进行修正用的,写在定界符外面
定界符
在程序语言中,使用与Perl兼容的正则表达式,通常都要将模式表达式放入定界符中,如 //
. 除了字母、数字、\ 以外的任何字符都可以作为定界符
原子
原子指的是那些未被指定为 元字符
的打印字符和非打印字符组成,所有符号都为原子。
-
打印字符:a-z A-Z 0-9 _ !@#$%^&*()_+ 等
-
非打印字符:
- \n 匹配一个换行符
- \cx 匹配由x指明的控制字符 x的值为A-Z 或者a-z之一
- \f 匹配一个换页符
- \r 匹配一个回车符
- \t 匹配一个制表符
- \v 匹配一个垂直制表符
-
\
可以将有意义的字符转为无意义的,也可以将无意义的转为有意义的,如上述的非打印字符
-
可以使用系统提供的代表范围的原子
\d
:代表任意一个数字 [0-9]\D
:代表任意一个非数字 [^0-9]\s
:代表一个空白 [\n\r\t\f ]\S
:代表一个非空白 [^\n\r\t\f ]\w
:代表任意一个字(a-z A-Z 0-9 _) [a-zA-Z0-9_]\W
:代表任意一个非字 [^a-zA-Z0-9_]
-
自定义原子表
[]
,只有一个生效就可以。 以上可以用自定义原子表来代替 如\d
为[0-9]等-
:表示范围^
:表示除了
-
.
能代表所有的
元字符
-
*
: 前面的原子可以出现0次,1次或者多次 -
+
: 前面的原子可以出现1次或者多次 -
?
: 前面的原子可以出现0次或者一次 -
{n}
: 前面的原子必须出现n次 -
{n,m}
: 出现n到m之间的次数 包括n和m -
{2,}
: 出现至少两次 -
{,5}
: 不可以这样写,可以以0开始 -
|
: 或的关系,表示它两边的原子只要有一个出现就行,但是|的优先级是最低的 -
^
或\A
: 必须以什么开始,这个必须写在正则表达式的最前面 -
$
或\Z
: 必须以什么结束,这个必须写在正则表达式的最后面 -
\b
: 匹配单词边界的如 this is island 用 /\bis\b/可以匹配中间的那个is
-
\B
: 匹配单词边界以外的的 -
()
的作用- 改变优先级
- 将小原子变成大原子,如
(aaa)*
- 子模式,整个表达式是一个大的模式,小括号中是每个独立的子模式,能获取全模式和所有的子模式
- 反向引用,即将子模式用在正在表达式中。
模式修正符
-
模式修正符号要写在定界符号外,放在右边
-
模式修正符号,一个字符就是一个功能,可以组合使用
-
作用:模式修正符号可以修正正则表达式的解释,或扩充了正则表达式的功能
-
用法
- i 不区分大小写(默认是区分大小写的)
- m 默认是看做一行的,加上m就视为多行
- s 使用了这个.可以匹配换行符
- x 修正正则表达式,可以省略空白
- e 修正正则表达式 preg_replace
- U
- (.*,.+)正则表达式比较贪婪
- (.*?) (.+?)取消贪婪模式
- U也能但是不兼容
- 这两种方式同时使用就不会奏效了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现