正则表达式 PHP

正则表达式的常用函数:

先写一个函数show,用来输出数组,使代码看起来方便,且把经常重复用到的量放在前面

function show($var=null)
{if(empty($var))//检测变量是否为空{echo 'null';}elseif (is_array($var)||is_object($var))//检测变量是否为数组或对象{echo '<pre>';print_r($var);echo '<pre>';}else{echo $var;}$pattern='/[0-9]/';
$subject="gyg87yuhg765t6rtfygvhfct7";
$replacement="¥";

1.

preg_match($pattern,$subject,[array&matches])和preg_match_all($pattern,$subject,[array&matches])

作用:

进行匹配,返回匹配的个数

变量:

$pattern 正则表达式,$subject目标字符串,[array&matches] 把匹配到的字符串放到一个数组中,可选

区别:

preg_match($pattern,$subject,[array&matches])*****只进行一次匹配,返回值为匹配个数,只有0和1preg_match_all($pattern,$subject,[array&matches])***匹配完全部目标数据,返回匹配个数

例:
//preg_match($pattern,$subject,[array&matches])*****只进行一次匹配,返回值为匹配个数,只有0和1
//,preg_match_all($pattern,$subject,[array&matches])***匹配完全部目标数据,返回匹配个数
$m1=$m2=array();$t1=preg_match($pattern,$subject,$m1);
$t2=preg_match_all($pattern,$subject,$m2);show($m1);
echo "<hr />";
show($m2);
echo "<hr />";
show($t1.'||'.$t2);
echo "<hr />";

在这里插入图片描述

2:

preg_replace($pattern,$replacement,$subject)preg_filter($pattern,$replacement,$subject)
功能:

实现查找并替换

参数:

$replacement替换成的字符

返回值:

替换后的字符串

区别:

当subject对应数组单元中没有满足正则表达式的值时,preg_replace会保留原来的数组单元,preg_filter会删除不符合表达式的数组单元,仅保留有满足表达式的单元

普通字符串二者作用差不多

$re=preg_replace($pattern,$replacement,$subject);
$fil=preg_filter($pattern,$replacement,$subject);show($re);
echo "<br />";
show($fil);

在这里插入图片描述

对象为数组时:

$pattern_rf=array('/[0123]/','/[456]/','/[789]/');
$replacement_rf=array('啊','西','吧');
$subject_rf=array('yty65','vh1jh','hghg','8uhhj','gggy');
$re_rf=preg_replace($pattern_rf,$replacement_rf,$subject_rf);
$fil_rf=preg_filter($pattern_rf,$replacement_rf,$subject_rf);echo "<hr />";
show($re_rf);
echo "<br />";
show($fil_rf);

在这里插入图片描述

3:

preg_grep($pattern,$subject_rf)
作用:

在目标数组中匹配并且只保留匹配到的数组的单元,相当于preg_filter取消替换功能

$gr=preg_grep($pattern,$subject_rf);
echo "<hr />";
show($gr);

在这里插入图片描述

4:

preg_split($pattern,$subject);
preg_quote($str)
作用:

preg_split通过pattern 匹配字符串,并以匹配到的字符串作为分割点分割字符串,将分割得到的若干字符串保存到一个数组中,作为函数返回值返回 preg_quote转义

$spl=preg_split($pattern,$subject);
echo "<hr />";
show($spl);
echo "<hr />";
$str='{hhhhhhhhh[]}';
show($str);
echo "<br />";
$str=preg_quote($str);
show($str);
echo "<hr />";

在这里插入图片描述
在这里插入图片描述

正则表达式的语法

1,界定符:

作用:

标志正则表达式开始和结束

类型:
//,##,{}
推荐在线工具:regexpal

在这里插入图片描述

2.原子

分为可见原子和不可见原子,可见原子即可以看见的字符串,不可见原子即看不见的字符串,例如空格,制表,回车等

3.元字符:

元字符作用
1.表示原子的筛选方式:
|,[],[^]
[]表示匹配内部元素,如;[0-9]表示匹配0-9的数字,二[^]表示匹配除[]内的元素,注意:^必须更在[后面
2.表示原子的集合

.  \d  \D  \s  \S  \w  \W

各自的作用:

  1. . :匹配除换行外的所有字符
  2. \d: 匹配0-9的数字,类似于[0-9]
  3. \D: 匹配除0-9外的所有元素,类似于[^0-9]
  4. \s \S :匹配不可见(可见)原子
  5. \w \W :匹配任意(非)字母数字下划线
4.量词

表示某个原子出现的次数
{n} ;表示某个原子恰好出现n次
{n,} :表示某个原子至少出现n次
{n,m}:表示某个原子至少出现n次,至多m次
*:表示某个原子至少出现0次
+:表示某个原子至少出现1次
:表示某个原子至少出现0次,至多1次

5.边界控制

^: 匹配字符串开始的位置
$: 匹配字符串结束的位置
匹配成功必须要以^之后的原子开始,以$之前的原子结束

6.模式单元

(pattern):模式单元中的正则表达式可以当作一个原子看待

7.修正符

1.贪婪匹配与懒惰匹配
贪婪匹配取其长,懒惰匹配(修正符:U)取其短

$pattern_xz_TL='/\d.+zjb/';
$subject_xz="uuuhytftdr677tz7tdrzjbhbhzjbbhjzjb,,,";
$matches_xz_TL=array();
preg_match($pattern_xz_TL,$subject_xz,$matches_xz_TL);
show($matches_xz_TL);
echo "<br />";
$pattern_xz_LD='/\d.+zjb/U';
$matches_xz_LD=array();
preg_match($pattern_xz_LD,$subject_xz,$matches_xz_LD);
show($matches_xz_LD);
echo "<hr />";

在这里插入图片描述

如上,使用贪婪匹配,匹配到第一个zjb后会继续匹配,直到匹配完整个字符串,若使用懒惰匹配,则匹配到第一个zjb后就直接返回

常用修正符:
U:懒惰匹配
i:忽略大小写
x:忽略空白
s:使.包含换行符,匹配所有


根据慕课网视频所写,原视频链接

源代码链接

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

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

相关文章

iis发布网站怎么支持.json文件

转载于:https://www.cnblogs.com/daizhipeng/p/5622839.html

PHP Cookie和Session

cookie cookle常用来识别用户&#xff0c;可以理解为浏览器留下的一种文件&#xff0c;cookie可以分为会话cookie和硬盘cookie两种&#xff0c;会话cookie生命周期短&#xff0c;浏览器关闭即销毁&#xff0c;硬盘cookie生命周期由开发者设定&#xff0c;可长可短 1.创建cook…

浏览器渲染机制

1. 明白浏览器渲染的目的 可访问性&#xff08;Accessability&#xff09;、加载性能和重构灵活性一直是前端工程师们关心的主题。 其中加载性能与浏览器的渲染机制深深挂钩&#xff0c;弄明白浏览器背后的渲染机制&#xff0c;才能在日常的前端的开发中明白如何进行性能优化。…

java中List Set Map使用

Testpublic void run(){ArrayList<String> list new ArrayList<String>();list.add( "美女");list.add( "帅哥");list.add( "芙蓉姐姐" );for (int i 0; i < list.size(); i) {String strlist.get(i);System. out.println(str);…

python免费开源工具推荐_年薪200万的程序员,推荐这10大Python免费开源工具!

原标题&#xff1a;年薪200万的程序员&#xff0c;推荐这10大Python免费开源工具&#xff01;毫无疑问&#xff0c;Python是最流行的语言之一&#xff0c;其成功的原因之一是它为科学计算提供了广泛的报道。 在这里&#xff0c;我们仔细研究用于机器学习和数据科学的十大Python…

通过Yeoman快速搭建AngularJS webapp应用的实践

这里主要记录关于使用yeoman快速构建angluarJS的前端应用的实践&#xff1a; 安装node、yeoman等过程略去 1、首页我们可以在公共的脚手架中找到自己想要的脚手架&#xff0c;官方脚手架库的地址 Yeoman generators: http://yeoman.io/generators/ 这里我们选择官方团队出的ang…

[Objective-C]编程艺术 笔记整理

看了《禅与 Objective-C 编程艺术》&#xff0c;发现不少平时不注意的或注意但没有系统总结的东西&#xff0c;特此记录一下。 这次没有整理完&#xff0c;后续更新会结合手里的一些其他资料整理。 新博客wossoneri.com传送门 完整的介绍看这两个链接Google开源项目风格指南禅与…

python大数据工程师 培训_大数据工程师学习之路

大数据的作用&#xff1a;发现过去事件的特征预测未来最优化选择职位划分&#xff1a;数据产品经理数据分析师->商业敏感性&#xff0c;产品经理的助手数据研发工程师数据挖掘工程师/数据科学家需要准备的技术知识&#xff1a;Linux操作系统与网络编程&#xff1a;进程/线程…

python序列

python序列 列表 python变量不存放值&#xff0c;之存放值的引用&#xff0c;所以列表中元素可以是不同类型 1.常用方法 1.1 增加元素 append,在末尾插入元素 extend&#xff0c;将一个列表整体插入到尾部 insert&#xff0c;将某个元素插入到特定位 /*&#xff0c;拼合…

前端资源(11)

移动端API 地址99移动端知识集合 https://github.com/jtyjty99999/mobileTech移动端前端开发知识库 https://github.com/AlloyTeam/Mars移动前端的一些坑和解决方法&#xff08;外观表现&#xff09; http://caibaojian.com/mobile-web-bug.html【原】移动web资源整理 http://w…

win10使用Composer-Setup安装Composer以及使用Composer安装Yii2最新版

1&#xff1a;下载 ca-bundle.crt和cacert.pem(见导航栏——文件) 将这两个文件放在php目录下 2:php.ini中添加上述两个文件的路径 curl.cainfoC:/xampp/php/ca-bundle.crtopenssl.cafileC:/xampp/php/ca-bundle.crt 写到最后一行就可以 3&#xff1a;下载Composer-Setup.exe h…

python离群点检测方法分几类_数据分析 第五篇:离群点检测

离群点(outlier)是指和其他观测点偏离非常大的数据点&#xff0c;离群点是异常的数据点&#xff0c;但是不一定是错误的数据点。确定离群点对于数据分析会带来不利的影响&#xff0c;比如&#xff0c;增大错误方差、影响预测和影响正态性。从散点图上可以直观地看到离群点&…

计算机网络TCP/IP

TCP/IP原理 看《图解TCP/IP》时做的笔记&#xff0c;记录一些感觉重要的东西…还没完&#xff0c;正在学&#xff0c;慢慢写 1.计算机网络的发展 2.OSI参考模型 3.传输方式分类 4.地址及网络的构成 5.TCP/IP协议的出现 6.TCP/IP分层模型及通信示例 7.数据链路层1 8.数…

hive求差集和交集

2019独角兽企业重金招聘Python工程师标准>>> 用的要求总数和统计数&#xff1a; 总数的概念是利用安卓ID&#xff0c;就以为这把两个月前的安卓ID统统的统计一遍&#xff0c;如果没有出现&#xff0c;恰好在今天出现了&#xff0c;那么当前的这个用户就是新增的…

python静态方法可以被继承吗_python 类的继承 实例方法.静态方法.类方法的代码解析...

这篇文章主要介绍了python 类的继承 实例方法.静态方法.类方法的代码解析,文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下dt{}class Denglu:def register(self,name,psd):if name.isalnum() and psd.isalnum():i…

渐变色--浏览器兼容性

说明&#xff1a; 1.360兼容模式效果不好 2.可以直接用不同浏览器打开这个页面查看效果 <!DOCTYPE html><html><head lang"en"> <meta charset"UTF-8"> <title></title> <style> body{ …

如何学习前端 转载

作者&#xff1a;小不了链接&#xff1a;https://zhuanlan.zhihu.com/p/23265155来源&#xff1a;知乎著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 鉴于时不时&#xff0c;有同学私信问我&#xff08;老姚&#xff0c;下同&#xff09;怎…

tcp前4字节消息长度_网络基础篇之TCP

​网络分层什么是 TCP TCP 是面向连接的、可靠的、基于字节流的传输层通信协议。- 面向连接&#xff1a;通过三次握手建立一对一的连接&#xff08; UDP 协议 可以一个主机同时向多个主机发送消息&#xff0c;即一对多&#xff09;&#xff1b;- 可靠的&#xff1a;通过序号、校…

使用Servlet实现用户注册

1、用户注册页面代码 <% page language"java" contentType"text/html; charsetUTF-8"pageEncoding"UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd&q…

年轻人的第一篇V语言笔记

V语言极限学习 我听说V语言看文档半小时就能完全掌握&#xff1f;&#xff1f;&#xff1f;&#xff1f;以我的智商一小时掌握不了我就给各位科普一下广告法&#xff1f;&#xff1f;&#xff1f; 宇宙惯例hello world // first v code fn main(){printIn("hello world…