PHP正则表达式

php正则表达示的定界符

PHP的正则表达示定界符的规定如下:

定界符,不能用a-z A-Z 0-9  其他的都可以用。必须成对出现,有开始就有结束。

我们来例几个例子:

  • /中间写正则/ 正确
  • %中间写正则% 正确
  • ^中间写正则^ 正确
  • @中间写正则@ 正确
  • (中间写正则) 错误
  • A中间写正则A 错误

原子
原子是正则表达示里面的最小单位,原子说白了就是需要匹配的内容。一个成立的正则表达示当中必须最少要有一个原子。
说明:我们见到的空格、回车、换行、0-9、A-Za-z、中文、标点符号、特殊符号全为原子。

preg_match 函数

int preg_match ( string $正则 , string $字符串 [, array &$结果] )

功能:根据$正则变量,匹配$字符串变量。如果存在则返回匹配的个数,把匹配到的结果放到$结果变量里。如果没有匹配到结果返回0
结果变量的值是一个数组,没有匹配到则是一个空数组。

<?php
//定义一个变量叫zz,放正则表达示。为了方便大家记忆,如果你英文比较ok,建议把变量名还是写成英文的$pattern
$zz = '/a/';$string = 'ddfdjjvi2jfvkwkfi24';if(preg_match($zz, $string, $matches)){echo '匹配到了,结果为:';var_dump($matches);
}else{echo '没有匹配到';
}?>

特殊标识的原子

原子说明
\d匹配一个0-9
\D除了0-9以外的所有字符
\wa-zA-Z0-9_
\W除了0-9A-Za-z_以外的所有字符
\s匹配所有空白字符\n \t \r 空格
\S匹配所有非空白字符
[ ]指定范围的原子

我们看看 [] 指定范围的原子

<?php$zz = '/[0-5]\w+/'; //匹配0-5的任意一个数字和最少一个字符$string = '6a';$string1 = '1C';if(preg_match($zz, $string, $matches)){echo '匹配到了,结果为:';var_dump($matches);
}else{echo '没有匹配到';
}// $string 匹配失败// $string1匹配成功?>

[^ 字符] 不匹配指定区间的字符

<?php$zz = '/[^\w]/';    //匹配一个非字符$string = 'aaaaab311dd';$string1 = '!$@!#%$#^##';if(preg_match($zz, $string1, $matches)){echo '匹配到了,结果为:';var_dump($matches);
}else{echo '没有匹配到';
}// $string 匹配失败// $string1匹配成功?>
原子等价式
\w[a-zA-Z0-9_]
\W[^a-zA-Z0-9_]
\d[0-9]
\D[^0-9]
\s[ \t\n\f\r]
\S[^ \t\n\f\r]

php正则表示中的元字符

抛出问题: \d 代表匹配一个字符。而我现在想要匹配十个八个,任意多个数字肿么办?

这个时候我们就要用到元字符。在使用原子的时候,发现只能够匹配一个字符,可是要匹配多个字符就出现了问题。
这个时候,我们需要借助元字符来帮我们修饰原子,实现更多的功能。

元字符功能说明
*是代表匹配前面的一个原子,匹配0次或者任意多次前面的字符。
+匹配一次或多前前面的一个字符
?前面的字符可有可无【可选】 有或没有
.更标准一些应该把点算作原子。匹配除了\n以外的所有字符
|或者。注:它的优先级最低了。
^必须要以抑扬符之后的字符串开始
$必须要以$之前的字符结尾
\b词边界
\B非边界
{m}有且只能出现m次
{n,m}可以出现n到m次
{m,}至少m次,最大次数不限制
()改变优先级或者将某个字符串视为一个整体,匹配到的数据取出来也可以使用它

php 正则达达示中的模式修正符

如果abc在第二行的开始处如何匹配?
我不希望正则表达示特别贪婪的匹配全部,只匹配一部份怎么办?

常用的模式匹配符有:

|模式匹配符 |功能
|--|--||
|i |模式中的字符将同时匹配大小写字母.
|m |字符串视为多行
|s |将字符串视为单行,换行符作为普通字符.
|x |将模式中的空白忽略.
|A |强制仅从目标字符串的开头开始匹配.
|D |模式中的美元元字符仅匹配目标字符串的结尾.
|U |匹配最近的字符串.

m 视为多行

<?php
$pattern = '/^a\d+/m';  //多行匹配开头a和一个数字
$string = "我的未来在自己手中我需要不断的努力
a9是一个不错的字符表示
怎么办呢,其实需要不断奋进";
if (preg_match($pattern, $string, $matches)) {echo '匹配到了,结果为:';var_dump($matches);
} else {echo '没有匹配到';
}// 匹配成功 'a9'
?>

s 识为一行

<?php$pattern = '/新的未来.+\d+/';$string = '新的未来
987654321';if (preg_match($pattern, $string, $matches)) {echo '匹配到了,结果为:';var_dump($matches);
} else {echo '没有匹配到';
}
//没有匹配到//-----------------------------------------------------//
$pattern = '/新的未来.+\d+/s';   //后面加了s$string = "新的未来
987654321";if (preg_match($pattern, $string, $matches)) {echo '匹配到了,结果为:';var_dump($matches);
} else {echo '没有匹配到';
}// 匹配成功 :   "新的未来 987654321"
?>

常用正则函数

函数名功能
preg_filter执行一个正则表达式搜索和替换
preg_grep返回匹配模式的数组条目
preg_match执行一个正则表达式匹配
preg_match_all执行一个全局正则表达式匹配
preg_replace_callback_array传入数组,执行一个正则表达式搜索和替换使用回调
preg_replace_callback执行一个正则表达式搜索并且使用一个回调进行替换
preg_replace执行一个正则表达式的搜索和替换
preg_split通过一个正则表达式分隔字符串

转载于:https://www.cnblogs.com/koala0521/p/7251247.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/252208.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最具戏剧性的分析诊断案例——十分钟锁定数据库性能“元凶”

昨天&#xff0c;正好有点空时间想看看书&#xff0c;结果&#xff0c;刚打开书&#xff0c;没看几个字儿&#xff0c;接到用户电话说&#xff1a;一个库有问题&#xff0c;希望能帮忙看下。因为我知道他们那边也有自己的专职DBA&#xff0c;于是问&#xff1a;没让人给看看吗&…

Python黑科技:在家远程遥控公司电脑,python+微信一键连接!

有时候需要远程家里的台式机使用&#xff0c;因为我平时都是用 MAC 多&#xff0c;但是远程唤醒只能针对局域网&#xff0c;比较麻烦&#xff0c;于是我想用微信实现远程唤醒机器。 *注意&#xff1a;全文代码可左右滑动查看 准备工作 本程序主要是实现远程管理 Windows10操作系…

c#通过app.manifest使程序以管理员身份运行

通常我们使用c#编写的程序不会弹出这个提示&#xff0c;也就无法以管理员身分运行。微软的操作系统使用微软的产品方法当然是有的&#xff0c;通过app.manifest配置可以使程序打开的时候&#xff0c;弹出UAC提示需要得到允许才可以继续&#xff0c;这样就获得了管理员的权限来执…

Oracle 作业

Oracle 作业 dbms_job与 dbms_scheduler 用于安排和管理作业队列,通过使用作业,可以使ORACLE数据库定期执行特定的任务。 一. dbms_job 1.1. 创建 variable jobno number; begin dbms_job.submit(:jobno,proce_t;, sysdate, sysdate1/24/60); commit; end; / 1.2. 参数 Job 输出…

企业级 Spring Boot 教程 (十四)用restTemplate消费服务

构架工程 创建一个springboot工程&#xff0c;去消费RESTFUL的服务。这个服务是 http: ///gturnquist-quoters.cfapps.io/api/random &#xff0c;它会随机返回Json字符串。 Spring Cloud大型企业分布式微服务云架构源码请加一七九一七四三三八零 在Spring项目中&#xff0c;它…

MOS管基本认识(快速入门)

1. 三个极的判定G极(gate)—栅极&#xff0c;不用说比较好认 S极(source)—源极&#xff0c;不论是P沟道还是N沟道&#xff0c;两根线相交的就是 D极(drain)—漏极&#xff0c;不论是P沟道还是N沟道&#xff0c;是单独引线的那边2. N沟道与P沟道判别箭头指向G极的是N沟道 箭头背…

基础构建模块

5 基础构建模块 Java平台类库包含了丰富的并发基础构建模块&#xff0c;例如线程安全的容器类以及各种用于协调多个相互协作的线程控制流的同步工具类(Synchronizer)。本章将介绍其中一些最有用的并发构建模块。 5.1同步容器类 同步容器类包括Vector和Hashtable&#xff0c;二者…

TCP定时器

1. TCP中7种定时器 TCP中有7中定时器 &#xff08;1&#xff09;建立连接定时器(connection-establishment timer) &#xff08;2&#xff09;重传定时器(retransmission timer) &#xff08;3&#xff09;延迟应答定时器(delayed ACK timer) &#xff08;4&#xff09;坚持定时…

sql优化大全

1. 优化SQL步骤 1. 通过 show status和应用特点了解各种 SQL的执行频率 通过 SHOW STATUS 可以提供服务器状态信息&#xff0c;也可以使用 mysqladmin extende d-status 命令获得。 SHOW STATUS 可以根据需要显示 session 级别的统计结果和 global级别的统计结果。 如显示当前s…

Halcon实现边缘提取

一、边缘提取 1、设置ROI兴趣区域 2、快速二值化&#xff0c;并连接相邻区域。 这样做的目的是进一步减少目标区域&#xff0c;通过二值化将目标区域大概轮廓提取出来 3、提取最接近目标区域的轮廓 常用函数有boundary&#xff0c;gen_contour_region_xld 4、根据自己的需求提取…

软件工程网络15个人阅读作业1 201521123038 游舒婷

软件工程网络15个人阅读作业1 201521123038 游舒婷 1.博客园地址 sakurai3104 2.码云地址 sakurai3104 3.阅读与思考 &#xff08;1&#xff09;回想一下你初入大学时对网络工程专业的畅想 当初你是如何做出选择网络工程专业的决定的&#xff1f; 填报志愿的时候&#xff0c;大…

18LaTeX学习系列之---LaTeX的参考文献

目录 目录前言&#xff08;一&#xff09;简单的参考文献1.说明2.源代码3.输出效果&#xff08;二&#xff09;以文件管理的方式1.说明&#xff1a;2.源代码&#xff1a;3.输出效果&#xff08;三&#xff09;直接从源网站获取1.说明&#xff12;.操作目录 本系列是有关LaTeX的…

Vue 2.0 v-for 响应式key, index及item.id参数对v-bind:key值造成差异研究

Vue 2.0 v-for 响应式key, index及item.id参数对v-bind:key值造成差异研究 在github上阅览README.md以获得最佳阅读体验&#xff0c;点这里 v-for响应式key, index及item.id参数对v-bind:key值造成差异研究 实验背景 通常情况下&#xff0c;我们渲染一个li列表&#xff0c;采用…

halcon edges_sub_pix算子

转载http://blog.51cto.com/juwen/133003 介绍一下Canny算子&#xff1a; 使用累计直方图计算两个阀值。凡是大于高阀值的一定是边缘&#xff1b; 凡是小于低阀值的一定不是边缘&#xff1b;如果检测结果大于低阀值但又小于高阀值&#xff0c;那就要看这个像素的邻接像素中有…

Python 基础(常用数据结构)

常用数据结构 1&#xff09;元组 元组是一种静态的数据结构&#xff0c;无法修改&#xff0c;若要修改只能重新生成新的元组。 输出结果&#xff1a; 元组元素的获取是通过索引值去获得的&#xff1b;例如上面的tup1[0]返回apple&#xff1b;另外你可以直接把tup1一次性赋给多个…

Java IO(二)——RandomAccessFile

一、RandomAccessFile RandomAccessFile类可以说是Java语言中功能最为丰富的文件访问类&#xff0c;它提供了众多的文件访问方法。RandomAccessFile类支持"随机访问"方式&#xff0c;可以跳转到文件的任意位置处读写数据。要访问一个文件的时候&#xff0c;不想把文件…

halcon select_shape_xld按区域大小描绘xld

常用与对xld进行以面积、长、宽进行XLD的选择操作。 select_shape_xld(XLD : SelectedXLD : Features, Operation, Min, Max : ) XLD&#xff1a;需要选择的xld SelectedXLD:选择后的xld Features:面积、长、高等 Operation&#xff1a;and、or等 Min&#xff1a;最小值门…

工业三防手持终端如何选

物联宇手持终端作为工业级的数据采集器&#xff0c;目前[]()已广泛应用在物流快递、生产制造、零售、医疗、公共事业等领域。由于工业环境的复杂性&#xff0c;手持终端在恶劣的环境下作业&#xff0c;在性能、稳定性、电池耐用性上的要求都较高&#xff0c;同时还必须采用一些…

centos7 安装python3

1.查看是否已经安装Python CentOS 7.2 默认安装了python2.7.5 因为一些命令要用它比如yum 它使用的是python2.7.5。 使用 python -V 命令查看一下是否安装Python 然后使用命令 which python 查看一下Python可执行文件的位置 可见执行文件在/usr/bin/ 目录下&#xff0c;切换到该…

centos svn 的搭建

一. SVN 简介 Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据。 这些数据放置在一个中央资料档案库(repository) 中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。 这样你就可以把档案恢复到旧的版本, 或是浏…