【正则入门】

news2024/12/28 17:11:48

语法

. (点) 匹配除换行符(\n、\r)之外的任何单个字符,相等于 [^\n\r]。
[\s\S] 匹配所有。\s 是匹配所有空白符,包括换行,\S 非空白符,不包括换行。
\d [0-9]
\D 非数字;
\w 匹配字母、数字、下划线。等价于 [A-Za-z0-9_];
\W 匹配\w的补集;

在这里插入图片描述

字符范围

$str = 'baidu o2o c2c xiling shuai 123 chou bage ';
//$patt= '/\b[a-zA-Z]+\b/';//加号表示多个不限;
$patt= '/\b[a-zA-Z]{5,}\b/';//最少有5个;
preg_match_all($patt,$str,$arr);
var_dump($arr);

结果:
在这里插入图片描述

找几个

  • *( 匹配前面的子表达式零次或多次);
  • +匹配前面的子表达式一次或多次;
  • ?匹配前面的子表达式零次或一次;
  • {n}n是一个非负整数。匹配确定的n次;
  • {n,m}m和n均为非负整数,其中n<=m,最少匹配n次,最多匹配m次;
  • {n,}n是一个非负整数。至少匹配n次;
$str='god goood   gooooooood';
$patt='/go+d/';
echo preg_replace($patt,'god',$str);

在这里插入图片描述

或者的 用法 |

$str = '211 hello 0210oo dkj44';
$patt = '/\b[a-zA-Z]+\b|\b\d+\b/';
preg_match_all($patt,$str,$res);
var_dump($res);

在这里插入图片描述

贪婪与非贪婪(正则默认是贪婪模式,在数量(+ * {n,})限定符后加?,非贪婪模式)

$str = 'ipad,iphone,imac,ipod,iamsorry,goood, god goooooooood jkl ljklkjklj';
//$patt = '/\bg.+d\b/';//贪婪模式  一直往后找
$patt = '/\bg.+?d\b/';//非贪婪模式  找到一个算一个
preg_match_all($patt,$str,$res);
var_dump($res);

贪婪模式结果

在这里插入图片描述

非贪婪模式结果

在这里插入图片描述

采集手机号

$str = '老王 买西瓜 联系15069091069,备用 电话 19935198152 QQ :1097848288,email 1097848289@qq.com,
xiguoahao 4576541244515069891526';
$patt = '/\b1[35879]\d{9}\b/';

preg_match_all($patt,$str,$res);
var_dump($res);

在这里插入图片描述

后向引用(第n个小括号内得子表达式,命中得内容,后面就佣\n来引用)


//找出首尾字母相同得单词
$str = 'txt hidffd hfihui jlkjlkj iuj hello bom mum';

$patt = '/\b([a-z])\w+\1\b/';

preg_match_all($patt,$str,$res);

var_dump($res);

在这里插入图片描述

//把手机号中间四位换成*
$str = '15069106959 19935198152';
$patt = '/\b(\d{3})\d{4}(\d{4})\b/';
//preg_match_all($patt,$str,$res);
$res=preg_replace($patt,'\1****\2',$str);
var_dump($res);

在这里插入图片描述

模式

模式修饰符,可以在一定程度上影响正则得解析行为
比如i,就代表正则不区分大小写,/[a-zA-Z]+/----->/[a-z]+/i
比如s,单行模式,就代表把整个文件看成一个“单行”
比如u 匹配中文

$str = 'hello world Chlha worLD';

//$patt = '/\b[a-z]+\b/'; //只匹配小写字母单词
$patt = '/\b[a-z]+\b/i';  //不区分大小写

preg_match_all($patt,$str,$res);

var_dump($res);

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

验证是否纯中文

$str = '时';

$patt = '/^[\x{4e00}-\x{9fa5}]$/u';//    \x   按ASCII码查,大括号中是对应的码

echo preg_match_all($patt,$str)?'chun':'zha';

预查

//取ing结尾得单词得词根
$str = 'hello  working  coming test wehn i am';

//前瞻   断言  正预测   零宽度
$patt = '/\b\w+(?=ing\b)/';//?=ing   后面是ing

preg_match_all($patt,$str,$res);

var_dump($res);

在这里插入图片描述

$str = 'hello  unworking  coming untest wehn i unam';

//零宽度   回顾    断言    正预测
$patt = '/(?<=\bun)\w+\b/';//    <   往前看      正预测   是否 ,,, 是  

preg_match_all($patt,$str,$res);

var_dump($res);

在这里插入图片描述

$str = 'hello  unworking  coming test wehn i am abc';

//前瞻   断言  负预测   零宽度
$patt = '/\b\w+(?!ing)\w{3}\b/';//满足3个且后三还不是ing得  单词长度大于3

preg_match_all($patt,$str,$res);

var_dump($res);

在这里插入图片描述

$str = 'hello  unworking  coming test wehn i am abc';

//找出不是un开头的单词
//回顾   断言  负预测   零宽度
$patt = '/\b\w{2}(?<!un)\w+\b/';

preg_match_all($patt,$str,$res);

var_dump($res);

在这里插入图片描述

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

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

相关文章

CISCN2023-Crypto

CISCN2023-Crypto 基于国密SM2算法的密钥分发可信度量Sign_in_passwdBB84badkey1 基于国密SM2算法的密钥分发 非预期&#xff0c;直接search能找到明文 curl -d "nameha&schoolhznu&phone110" http://123.56.244.196:30817/api/logincurl -d "id984ae…

【线程池】实现多线程并发定时任务

文章目录 一、为什么需要配置多线程定时任务二、单线程定时任务三、多线程定时任务 一、为什么需要配置多线程定时任务 springboot中通过注解 Scheduled 注解的方法都是一个定时执行的任务, 默认都是单线程的,就算是多个定时任务也是在同一个单线程(scheduled-1)中运行, 如果其…

离线版Gerber查看器+PCB/PCBA检测神器新功能!

一、CAM离线版——华秋CAM│专业Gerber查看器 公司电脑不能连接网络&#xff1f;不慌&#xff0c;我们完全离线且无需账号登录&#xff01; 磁盘空间不够拒绝下载&#xff1f;别怕 &#xff0c;我们安装包仅20M可随便分享&#xff01; 不会使用CAM350导入Gerber&#xff1f;没事…

APP开发死亡潮来临 小程序是否会取而代之?

移动互联网的发展&#xff0c; APP开发行业也迎来了它的大时代。据有关数据显示&#xff0c;2017年上半年国内新增的 App数量达到了创纪录的449万款&#xff0c;用户使用时长超过了200亿分钟。移动互联网已成为名副其实的“流量”产业&#xff0c;也因此诞生出一大批 APP开发公…

PostgreSQL 基础(一)-- 新手教程

PostgreSQL 12 官网 github 世界上最先进的开源关系数据库 1、新手入门 1.1 安装 当然&#xff0c;在使用PostgreSQL之前&#xff0c;你需要安装它。PostgreSQL可能已经安装在您的站点上&#xff0c;或者因为它包含在您的操作系统发行版中&#xff0c;或者因为系统管理员已…

【了不起的芯片 - 读书笔记】CPU 的制作流程 ( 晶圆制作 | 光刻机光刻流程 | 蚀刻过程 | 涂层过程 | 重复上述步骤若干次 | 芯片封装 )

文章目录 一、晶圆制作二、光刻机光刻流程三、蚀刻过程四、涂层过程五、重复上述步骤若干次六、芯片封装 一、晶圆制作 晶圆制作是半导体芯片制造的关键过程&#xff0c;它涉及将硅晶片&#xff08;或其他半导体材料&#xff09;转化为可以用于集成电路制造的基础材料。下面是晶…

ERP的需求分析

目录 什么是需求分析? 开发背景 01、系统模块 02、基础资料 供应商信息</

JDK21:Java21的新特性

背景 定于9月推出的Java21计划现在包括一个关键封装机制API和32位Windows端口的弃用。 Java开发工具包&#xff08;JDK&#xff09;21将于9月作为Oracle标准Java实现的下一个长期支持版本&#xff0c;现在有13个功能被正式提出&#xff0c;最近几天又增加了两个功能。 最新的…

ATECLOUD云测试平台新能源电机测试系统:高效、可扩展的测试利器

随着全球对环境保护的日益重视&#xff0c;新能源的发展越来越受到关注。电动汽车作为新能源领域的重要组成部分&#xff0c;其性能和质量对于消费者来说至关重要。为了确保电动汽车的性能和质量&#xff0c;测试系统平台解决方案变得越来越重要。本文将介绍一种基于ATECLOUD智…

10分钟学会sovits第一篇

So-vits-svc 基于端到端架构的VITS和soft-vc&#xff0c;用户只需准备几十分钟到几个小时不等的语音或歌声数据&#xff0c;就能制作&#xff08;训练&#xff09;属于自己的 AI 声库 &#xff08;前提是你的显卡足够给力&#xff09;&#xff0c;将一段语音或歌声转换为你想要…

上饶广信区个体私营经济协会新班子力争打造全国样板

5月26日下午&#xff0c;江西省上饶市广信区个体私营经济协会第二届理事会暨会员代表大会在上饶京都国际大酒店隆重召开&#xff0c;来自协会的200多名理事会员单位及社会各界嘉宾、媒体代表共计300余人参加了此次大会。本次大会成功举行了换届大会&#xff0c;通过举手表决方式…

解决启动tomcat出现的The JRE_HOME environment variable is not defined correctly问题~

错误描述如下&#xff1a; 解决办法&#xff1a; 首先打开环境变量的编辑位置检查你的环境变量是否配置完成&#xff1a; 环境变量配置如果没有问题&#xff0c;但启动tomcat还是出现上述错误&#xff0c;则可进行下述步骤&#xff1a; 找到目标文件&#xff1a; 右击对其进行…

R-Meta分析与【文献计量分析、贝叶斯、机器学习等】多技术融合实践与拓展进阶

目录 专题一 Meta分析的选题与文献计量分析CiteSpace应用 专题二 Meta分析与R语言数据清洗及相关应用 专题三 R语言Meta分析与精美作图 专题四 R语言Meta回归分析 专题五 R语言Meta诊断分析与进阶 专题六 R语言Meta分析的不确定性及贝叶斯应用 专题七 深度拓展机器学习在…

Word控件Spire.Doc 【其他】教程(3):使用 Marco 加载 Word 、删除 Marco

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下&#xff0c;轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具&#xff0c;专注于创建、编辑、转…

【现实生活实际应用】【公交车换乘算法——算法用在公交车】【bfs在图论】【单源最短路-如何根据图意构建图,最重要】最优乘车【sstream输入】

问题出现了 其实我们构图的时候&#xff0c; 我们已经知道1 - 3 - 5 那么我们直接让1 连到 3 和 5 表示直达 如果出现另一路 4 7 3 6 则3最终连接的是 5 和 6 从1开始&#xff0c;先走到了 3 和 5 然后bfs宽搜到3&#xff08;此时就表示换乘了&#xff0c;因为1直达的已经都遍历…

分布式网络通信框架(十五)——Mprpc项目总结

程序调用时序图 下图介绍了项目代码的调用时序&#xff0c;从rpc服务提供方开始看 简单描述项目、实现了怎样的功能&#xff1f;采用了哪些技术栈 这个项目是基于C语言实现的一个RPC分布式网络通信框架项目&#xff0c;使用CMake在Linux平台上构建编译环境。它可以将任何单体…

北醒Modbus协议在Python下Tkinter模块实现功能配置的GUI设计

目录 实验目的测试环境Python库需求Benewake(北醒) TF雷达接线示意图库安装说明例程运行展示 实验目的 实现485接口系列雷达Modbus协议在Python下Tkinter模块实现功能配置的GUI设计。 本例程主要功能如下&#xff1a; 1.设备连接&#xff08;已知雷达设备的波特率和站号&#…

投票评选活动小程序怎么做

投票评选活动小程序怎么做&#xff0c;做一下笔记&#xff0c;记录一下分析、开发搭建的过程。 焦点图 焦点图用于主题展示。焦点图使用了image组件&#xff0c;其中mode为设置图片裁剪、缩放的模式。widthFix缩放模式&#xff0c;宽度不变&#xff0c;高度自动变化&#xff0…

【Stata】teffects和psmatch命令区别联系 | ATE/ATU/ATT实际计算原理

这里主要是做个学习记录。 参考链接来自&#xff1a; https://www.ssc.wisc.edu/sscc/pubs/stata_psmatch.htm 很经典的一篇帖子 以下主要是对用到的stata命令和过程做个记录 &#xff08;以下内容需要一点点的psm基础&#xff0c;包括ate、atu、att&#xff0c;psm处理流程等…

为每个项目单独设置node版本

如果你同时开发多个项目&#xff0c;每个项目所需的node版本又不相同&#xff0c;那么你需要为每个项目单独设置node版本。 node官网上介绍了几种版本管理工具&#xff0c;有&#xff1a;n&#xff0c;nodenv&#xff0c; nvm。 Installing Node.js via Package Manager node…