正则表达式 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

浏览器渲染机制

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

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…

hive求差集和交集

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

渐变色--浏览器兼容性

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

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…

android studio运行手机时出错怎么解决_小程序 android ios h5解决方案

你现在开发android,ios,小程序用什么工具&#xff0c;怎么开发的&#xff1f;还在单个端的开发吗&#xff1f;今天我们主要讨论的是一次开发多端使用的技术&#xff0c;也是这两年比较流行的开发方向。现在的终端太多了&#xff0c;app两个端android和ios,小程序有微信&#xf…

C语言 第八章 函数、指针与宏

一、函数 函数是一个包含完成一定功能的执行代码段。我们可以把函数看成一个"黑盒子", 你只要将数据送进去就能得到结果, 而函数内部究竟是如何工作的的, 外部程序是不知道的。外部程序所知道的仅限于输入给函数什么以及函数输出什么。函数提供了编制程序的手段,使之…

promise用法_Promise的秘密

写在前面本篇文章将会带大家从分解promise入手&#xff0c;一步步实现一个promise。但阅读之前需要比较熟练地了解了解用法&#xff0c;结合用法看文章可能更容易理解。结构先看一下简单的用法。const promise new Promise((resolve, reject) > {setTimeout(() > {resol…

Web Service 性能测试工具比较

背景 希望选择一款Web Service性能测试工具&#xff0c;能真实模拟大量用户访问网站时的请求&#xff0c;从而获取服务器当前的请求处理能力&#xff08;请求数/秒&#xff09;。以微信服务器为例&#xff0c;每个用户用独立的登录token&#xff0c;做各种操作&#xff0c;比如…

cocoapods的安装(这真是一个神奇的东西,每次安装的方法都不一样,而且很容易出现各种各样的错误)...

文章开始之前&#xff0c;建议安装一个显示网速的插件&#xff0c;不然你不知道到底有没有下载&#xff0c;也让生活有一点盼头 1.因为众所周知的原因&#xff08;我dang的行为真的是让人失望&#xff09;&#xff0c;先更换一下ruby镜像源 $ gem sources --remove https://rub…

转】MyEclipse使用总结——在MyEclipse中设置jsp页面为默认utf-8编码

原博文出自于&#xff1a;http://www.cnblogs.com/xdp-gacl/p/3496161.html        感谢&#xff01; 在MyEclispe中创建Jsp页面&#xff0c;Jsp页面的默认编码是“ISO-8859-1”&#xff0c;如下图所示&#xff1a; 在这种编码下编写中文是没有办法保存Jsp页面的&#…

华为机试题【10】-求数字基root

题目描述&#xff1a; 求整数的Root:给定正整数,求每位数字之和;如果和不是一位数,则重复; 输入&#xff1a;输入任意一个或多个整数 输出&#xff1a;输出各位数字之和,直到和为个位数为止(输入异常,则返回-1)&#xff0c;多行&#xff0c;每行对应一个输入数据的结果。 样例…

python update skeleton 不自动_python编程笔记(1)-数据类型

断断续续学了一些&#xff0c;但是后边一直没有使用&#xff0c;就又忘记了。为了缩短学习周期&#xff0c;这次学习的方法&#xff1a;先学主要框架&#xff08;数据类型、条件、循环、函数、类、numpy、pandas、sklearn&#xff09;&#xff0c;后期直接看朋友code 实操了&am…

如何访问另一台电脑的共享文件夹_如何远程控制另一台电脑

在工作中&#xff0c;我们时常需要远程控制一下另一台电脑&#xff0c;如果这两台计算机在局域网内可以通过远程桌面轻松实现&#xff0c;如果这两台计算机不在局域网内则通常需要借助第三方软件来实现。远程桌面使用分三步&#xff1a;1、被控制端要开启远程桌面功能&#xff…

微软Hololens学院教程- Holograms 101: Introduction with Device【微软教程已经更新,本文是老版本】...

这是老版本的教程&#xff0c;为了不耽误大家的时间&#xff0c;请直接看原文&#xff0c;本文仅供参考哦&#xff01;原文链接&#xff1a;https://developer.microsoft.com/EN-US/WINDOWS/HOLOGRAPHIC/holograms_101 这篇文章将通过一个完整的实例来了解设备的核心特性&#…

qtableview点击行将整行数据传过去_可以实时获取数据的Database Asset插件

前言&#xff1a;Goby之前开放的插件入口点较少&#xff0c;大家只能在扫描前、扫描后执行事件&#xff0c;无法参与扫描过程中来。为实现更多场景的应用及提高扫描效率&#xff08;如&#xff1a;后台爆破子域名等&#xff09;&#xff0c;Goby开放了一些新的API&#xff1a;事…

Kendo UI开发教程:Kendo UI模板概述

2019独角兽企业重金招聘Python工程师标准>>> Kendo UI框架提供了一个易用&#xff0c;高性能的JavaScript模板引擎。通过模板可以创建一个HTML片段然后可以和JavaScript数据合并成最终的HTML元素。Kendo 模板侧重于UI显示&#xff0c;支持关键的模板功能&#xff0c…

多线程调用同一个对象的方法_多线程之如何创建和使用线程

一、创建线程和使用线程方式1.1 继承Thread让线程类继承自Thread类&#xff0c;然后重写run()&#xff0c;把需要多线程调用的代码放到run()中。但是需要开启线程的时候不能调用run方法&#xff0c;而是需要调用start()方法。/*** 本类用于演示第一种实现多线程的方式*/ class…