php正则或者,PHP 正则表达式
PHP 正则表达式
一、正则表达式简介
正则表达式是用于描述字符排列和匹配模式的一种语法规则。它主要用于字符串的模式分割、匹配、查找和替换操作。目前为止,我们前面所用过的精确(文本)匹配也是一种正则表达式。
在PHP中,正则表达式一般由正则字符和一些特殊字符(类似于通配符)联合构成的一个文本模式的程序性描述。
在PHP中,正则表达式有三个作用:1.匹配,常用于从字符串中析取信息 2.用新文本代替匹配文本 3.将一个字符串拆分为一组更小的信息块
一个正则表达式中至少包含一个原子
二、两套正则表达式函数库
PCRE库(推荐):使用preg_为前缀命名的函数;
POSIX库:使用ereg_为前缀命名的函数
三、PCRE库函数
函数名 描述
----------------------|--------------------------
preg_match() | 进行正则表达式匹配
preg_match_all() | 进行全局正则表达式匹配
preg_replace() | 执行正则表达式的搜索和替换
preg_split() | 用正则表达式分割字符串
preg_grep() | 返回与模式匹配的数组单元
preg_replace_callback | 用回调函数执行正则表达式的搜索和替换
四、使用场景
表单验证
url_rewrite (url地址重写)
爬虫
五、正则表达式的组成部分
1.定界符 (必须)
通常使用特殊字符组成,常用“/”。
2.原子(必须)
是正则表达式的最基本组成单元,而且在每个模式中最少要包含一个原子。原子是由所有那些未显示指定为元字符的打印和非打印字符组成,具体分为5类。
普通字符作为原子:如a~z,A~Z,0~9。
一些特殊字符和转义后元字符作为原子: \' \* \+ \? \.等。
一些非打印字符作为原子:如:f n r t v cx。
使用“通用字符类型”作为原子:如:d D w W s S。
自定义原子表([ ])作为原子:如:'/[apj]sp/'。
3.元字符
4.模式修正符
示例:
# 匹配一个字符a
$pattern = '/a/';
# 匹配字符a,如果有返回1,没有返回0,只能匹配一次。
echo preg_match($pattern, '012344556');
# preg_match也可用于判断
if(preg_match($pattern, "1232423423", $matches)) {
echo "匹配到了
";
# 并把匹配出来的字符以数组的形式赋值给$matches;
# 打印结果:`array(1) {[0] => string(1) "a"}`;
var_dump($matches);
}else {
echo "没有匹配";
}
元字符匹配:
# 如果只想匹配 `.`,特殊含义的字符要转义。
$pattern = "/\./"
# 匹配非打印字符
$pattern = "/\n/"
# 匹配0-9数字
$pattern = "/\d/";
# 匹配除了0-9的数组
$pattern = "/\D/";
# 匹配数字+大小写字母+下划线
$pattern = "/\w/";
# 匹配除了数字、大小写字母、下划线
$pattern = "/\W/";
# 匹配空白符(换行、缩进、空格)
$pattern = "/\s/";
# 匹配除了空白符的字符
$pattern = "/\S/";
# `*` 代表匹配前面的原子出现0、1、或多次
$pattern = "so*u";
# `+` 代表匹配前面的原子出现1次、或多次
$pattern = "so+u";
# `?` 匹配前面的一个原子出现0次或者1次
$pattern = "hao?sou";
# 匹配除了换行符的任意字符
$pattern = "/./";
# `|`代表或者
$pattern = "/a|b|c/";
# 匹配前面的一个原子恰巧出现n次;
$pattern = "/hao{2}sou/";
# 匹配出现>=2次
$pattern = "/hao{2, }sou/";
# 匹配出现2-5次
$pattern = "/hao{2, 5}sou/";
# `^` 必须以该原子开头
$pattern = "/^aaa/";
# `$` 必须以该原子结尾
$pattern = "/aaa$/";
# 严格模式
# 必须严格只能匹配aaa。
$pattern = "/^aaa$/";
# a | b | c
$pattern = "/[abc]/";
# 除了a,b,c
$pattern = "/[^abc]/";
# `()`可以看做一个整体,还可以做反向引用
# 比如要匹配协议头为http、https、ftp
$pattern = "/(http|https|ftp):\/\//";
# 匹配除了空白符的任意字符
$pattern = "/.*/";
# `.*`贪婪模式
$str = "abcabc";
$pattern = "/.*/";
# `.*?`取消贪婪模式
$pattern = "/.*?/";
或:
$pattern = "/.*/U";
模式修正符:
`i`代表ignore,忽略大小写
`m`匹配多行
`.`修正.的换行符
`x`忽略正则表达式里面的空白符
`D`取消$对\n的忽略
php正则或者,PHP 正则表达式相关推荐
- python正则库_python 正则表达式第三方库 re的基本使用
re模块简介: 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配,而re模块就是python中实现正则的模块 正则表达式简介: 非打印字符: 非打印字符也可以是正则表达 ...
- 编译原理-正则文法与正则表达式的相互转化
正则文法与正则表达式的相互转化 前言 一.正则文法 1.定义 2.例子 二.正则表达式 1.定义 2.例子 三.转换规则 1.正则文法转换为正则表达式 2.正则表达式转换为正则文法 四.转换例子 1. ...
- 编译原理--正则文法与正则表达式
对任何正则文法G,存在定义同一语言的正则表达式r 对任何正则表达式r,存在生成同一语言的正则文法G 正则文法到正则表达式的转换 将正则文法中的每个非终结符表示成关于它的一个正则表达式方程,获得一个联立 ...
- java 正则_认识正则表达式(Java语言基础)
正则表达式: 1. 字符串 2. 表示正确规则的式子 我们做一个SimpleDateFormat例子 首先新建一个工程,创建一个类 我们在获取当前系统时间的时候,我们可以按照下面的方式输出. 会发现输 ...
- python正则匹配_python 正则表达式详解
正则表达式是一个很强大的字符串处理工具,几乎任何关于字符串的操作都可以使用正则表达式来完成,作为一个爬虫工作者,每天和字符串打交道,正则表达式更是不可或缺的技能,正则表达式的在不同的语言中使用方式可能 ...
- java 正则 懒惰_正则表达式懒惰模式
在写BLOG练习程序的时候,考虑到用BBS直接输入可能会更加简洁些.但是如何转换又成了一个问题. 在群里问了问朋友,一致认同使用正则表达式最好.于是又翻起了那篇我觉得很好的正则表达式三十分钟入门,看了 ...
- php认识正则吗,php正则表达式有什么用
我们什么时候使用正则表达式呢?不是所有的字符操作都用正则就好了,php在某些方面用正则反而影响效率.当我们遇到复杂文本数据的解析时候,用正则是比较好的选择. 优点 正则表达式在处理复杂字符操作的时候, ...
- php 正则 菜鸟,PHP正则表达式基础入门
思维导图 介绍 正则表达式,大家在开发中应该是经常用到,现在很多开发语言都有正则表达式的应用,比如JavaScript.Java..Net.PHP 等,我今天就把我对正则表达式的理解跟大家唠唠,不当之 ...
- 正则环视 php,正则表达式基本知识(php)
这里的知识点基本上是<正则指引>的读书笔记,只是每个知识点的示例代码用php来实现. 1. 字符组 字符组(Character Class)就是一组字符,在正则表达式中,它表示" ...
- python正则_python的正则表达式
上次小编写了正则表达式的用法,今天就小编就讲讲正则表达式再python中的应用,在python中想使用正则表达式就需要导入re模块. 接下来小编将先介绍re模块中几个常见的函数 findall: re ...
最新文章
- 风控特征—关系网络特征工程入门实践
- T-SQL中的随机数
- maven进行junit测试时报错(二)
- Spring 多视图配置
- v-on指令修饰符大全
- 【OFDM系列3】AWGN下基于循环前缀(CP)OFDM调制解调原理、信噪比计算及仿真(H Harada经典OFDM书籍中代码详解及更正)
- blender的汉化方法!
- 全面认识UML类图元素
- react-native 发送接收“广播”
- 性能测试:基础(4)
- win10树莓派改ip_在树莓派2上安装 Windows 10
- 如何判断一个数为无符号数还是有符号数
- Linux 宏定义之 offsetof 与 container_of(十九)
- 最适合入门的laravel初级教程(一)序言
- 【机器学习】【决策树】C4.5算法,详解+python代码实现
- 共享自习室预约小程序APP系统开发设计方案
- 拼多多校招内推编程题2 大整数乘法
- RK3399平台开发系列讲解(内核驱动外设篇)6.17、VOP驱动解析
- 【Excel 教程系列第 6 篇】制作斜线表头
- CSharp和.net的简单介绍
热门文章
- JavaWeb核心技术——Response响应
- 判断指定日期是否为节假日、双休日、工作日
- 流动贴图需要注意的问题
- django html中文乱码,django中文乱码及中文报错问题
- linux kodi 设置中文,Linux下安装多媒体中心 Kodi 18.8 新版本并设置中文界面
- 中国人英语学习的七个阶段
- 数据库语句where、on、having的区别
- 微型计算机常用的worm是,具有多媒体功能的微型计算机系统中,常用的的WORM是()A.只读型大容量软盘B.只读型光盘C.一次性写...
- 系统调用之sys_nanosleep
- HTML5中section和article的区别