作者:极客小俊 一个专注于web技术的80后

我不用拼过聪明人,我只需要拼过那些懒人 我就一定会超越大部分人!

CSDN@极客小俊,原创文章, B站技术分享

B站视频 : Bilibili.com

个人博客: cnblogs.com

正则表达式在字符串处理中的应用(一)

php正则表达式的介绍:

  1. 正则表达式: 就是描述字符串排列模式的一种自定义语法规则、也是用于描述字符串排列 或 匹配模式的一种语法规则、
  2. 正则表达式: 就是用于描述字符串排列 或 匹配模式的一种语法规则、
  3. 它主要用于字符串的: 分割字符串、查找字符串、替换字符串 的一系列操作
  4. 在php中 正则表达式一般是由一些特殊字符联合构成的一个文本模式描述
  5. 如果可以使用字符串处理函数完成的任务,就不要使用正则, 性能相关、但是有一些复杂的操作只能使用正则完成
  6. 正则表达式不单独属于某一个语言、它是可以在很多计算机语言中应用: php、java、c++..都通用
  7. 正则表达式也称为一种模式表达式。
  8. 正则表达式就是通过构建具有特定规则的模式,与输入的字符信息比较,再进行分割、匹配、查找、替换等工作

php正则表达式快速入门小案例如下:

"/<img\ssrc=".?"/>/"

以上正则表达式结构的特点分析:

一、 正则表达式也是一个字符串

二、具有特殊意义的字符组成的字符串

三、具有一定的编写规则,也可以看作是一种模式

四、也可以看作是一种编程语言(是用一些特殊字符,按规则编写出一个字符串,形成一种模式---正则表达式)

注意:在php中、如果正则表达式,不和函数一起使用,则它就是一个字符串,如果将正则

表达式放到到某个函数中使用, 才能发挥出正则表达式的作用。

用到分割函数中,就可以用这个正则去分割字符串

用到替换函数中,就可以用这个正则去替换字符串

先写一个php正则表达式小案例 : 模式验证

$pattren="/[^0-9]/";
$string="07896984666#659875454";
if(preg_match($pattren,$string,$matches)){
echo "正则表达式<b>{$pattren}</b> 和字符串 <b>{$string}</b> 匹配成功,匹配结果如下";
show($matches);
}else{
echo "<font color='read'>正则表达式<b>{$pattren}</b> 和字符串 <b>{$string}</b> 匹配失败</font>";
}

国外在线测试正则表达式地址:

https://regex101.com/

https://www.regexpal.com/

正则表达式在php手册中位置如下:

在PHP中给我们提供两套正则表达式函数库

POSIX 扩展正则表达式 ereg_ 开头的函数 [这种在PHP5.3以后被废除了]

PCRE 正则表达式(兼容 Perl) preg_ 开头的函数 [推荐]

两种函数库功能一样

注意:推荐使用正则表达式(兼容 Perl) 函数库.

手册位置如下图:

学习php正则表达式时,有两方面需要学习:

一、正则表达式的模式如何编写

二、学习正则表达式的强大处理函数

php正则表达式的模式如何编写

正则表达式的组成部分

  1. 定界符 // 为默认定界符号 (有一些语言是不需要这个定界符号)这也被叫做:界定符!

    除了字母、数字和正斜线\ 以外的任何字符都可以为定界符号,进过测试以下都是可以的

    | | 例如: |<img\ssrc=".?"/>|

    // 例如: /<img\ssrc=".?"/>/

    { } 例如: {<img\ssrc=".?"/>}

    ! ! 例如: !<img\ssrc=".?"/>!

例如: #<img\ssrc=".?"/>#

但是没有特殊需要,我们都使用正斜线 // 作为正则表达式的定界符号!

  1. 原子: 是正则表达式的最基本组成单位,而且正则至少要包含一个原子、普通字符是编写正则表达式时最常见的原子了,包括所有的大写和小写字母字符、所有数字等。例如,a-z、A-Z、0-9 或者单独使用的字符,就是原子、所有打印(所有可以在屏幕上输出的字符串)和非打印字符(看不到的)都可以是原子、例如:空格、换行等等...

    ① 普通字符作为原子

    /5/ 用于匹配字符串中是否有5这个字符出现

    /php/ 用于匹配字符串中是否有PHP字符串出现

    / / 匹配空字符串

    ② 一些特殊字符和量词作为原子

    .、*、+、?、 (、 <、>、/、用有意义的字符作为原子来使用,必须使用 ”\“转义字符转义 " \ " 转义字符可以将有意的字符转成没意义的字符

    所以任何一个符号都可以作为原子使用,但如果这个符号在正则表达式中有一些特殊意义,我们就必须使用转义字符“\”取消它的特殊意义,将其变成一个普通的原子。例如,所有标点符号以及一些其他符号,双引号””、单引号' 、“*”、“+”、“.”等,如果当原子就必须像\”、\’、+ 和 . 这样使用。

    例如 . 在正则中表示任意一个字符, [包括 . 在内] 那么只匹配一个字符 如果作为原子来光匹配 . 的话 就要转义 如下

    ‘/./’ 用于匹配字符串中是否有英文的“.”出现

    '/<br/>/’用于匹配字符串中是否有HTML的
    标记字符串出现

转义字符: 如果你要使用正则表达式中的一些特殊符号来作为原子进行匹配 就必须转义例如: \ 、 . 、/、 \、[ 、]、 等等...

(匹配与特殊字符同名的普通字符,需要在前面加 ,把特殊字符转义为普通字符。)

正则表达式中 使用特殊字符例如 正斜杠/ 、问号? 都是需要使用\来转义的

例如: $ptn='/http:///'; 匹配: http://

小提示: 写正则表达式的时候最好是使用单引号进行书写!

  1. 在正则表达式中可以直接使用一些 [元字符] 代表范围的原子

    意思就是还有一些英文字母加上了 ‘\’ 反斜杠后、可以将没意义的英文字母转为有意义的[元字符]: 如下所示

    \d : 表示任意一个十进制的数字 等同于: [0-9]

    \D : 表示任意一个除数字这外的字符 等同于: [^0-9]

    \s : 表示任意一个空白字符,空格、\n\r\t\f 等同于: [\n\r\t\f]

    \S : 表示任意一个非空白 等同于: [^\n\r\t\f ]

    \w : 表示任意一个字 a-z、A-Z、0-9 _ 等同于: [a-zA-Z0-9_]

    \W : 表示任意一个非字, 除了a-zA-Z0-9_以外的任意一个字符

    所以 \W 等同于: [^a-zA-Z0-9_] 意思就是非字母 数字 下划线 以外的任意一个字符

    4. 自定义一个原子表[], 可以匹配方括号中的任何一个原子字符

    [a-z5-8]

    [^a-z] 表示取反, 就是除了原子表中的原子,都可以表示

    注意: ( ^必须在[]内的第一个字符处出现 ).

    小结:

    [ ] 它里面的任意一个字符

    [^abc] 它里面除了abc的任意一个字符



"点赞" "评论" "收藏"


大家的支持就是我坚持下去的动力!


如果以上内容有任何错误或者不准确的地方,欢迎在下面 留个言指出、或者你有更好的想法,欢迎一起交流学习

PHP正则表达式核心技术完全详解 第1节的更多相关文章

  1. PHP正则表达式核心技术完全详解 第2节

    作者:极客小俊 一个专注于web技术的80后 我不用拼过聪明人,我只需要拼过那些懒人 我就一定会超越大部分人! CSDN@极客小俊,原创文章, B站技术分享 B站视频 : Bilibili.com 个 ...

  2. JMeter 后置处理器之正则表达式提取器详解

    后置处理器之正则表达式提取器详解   by:授客 QQ:1033553122 1. 添加正则表达式提取器 右键线程组->添加->后置处理器->正则表达式提取器 2. 提取器配置介绍 ...

  3. Jmeter 正则表达式提取器详解(Regular Expression Exactor)

    Jmeter 正则表达式提取器详解(Regular Expression Exactor) Name(名称):随意设置,最好有业务意义. Comments(注释):随意设置,可以为空 Apply to ...

  4. - > 并查集详解(第二节)

    以下是并查集思路详解: 一:概念 并查集处理的是“集合"之间的关系.当给出两个元素的一个无序数对(a,b)时,需要快速“合并”a和b分别所在的集合,这期间需要反复“查找”某元素所在的集合.“ ...

  5. C#关键字详解第五节

    最近有点忙于追剧<人民的名义>所以并未及时更新,所以大家理解理解,哈哈,这部剧很不错!推荐大家去 看看!下面我们继续C#关键字解释! const:常量 一般我们说常量都是以PI(3.14) ...

  6. C#正则表达式语法规则详解

    正则表达式通常包含字母文本(Literaltext)和元字符(metacharacter) 字母文本指的是普通文本如"abcde"可匹配字符串中任何包含"abcde&qu ...

  7. C#中Spli、正则表达式分解字符串详解

    一.String.Split方法提供了如下6个重载函数: 名称 说明 String.Split (Char[]) 返回包含此实例中的子字符串(由指定 Char 数组的元素分隔)的 String 数组. ...

  8. notepad++正则表达式替换字符串详解

    正则表达式是一个查询的字符串,它包含一般的字符和一些特殊的字符,特殊字符可以扩展查找字符串的能力,正则表达式在查找和替换字符串的作用不可忽视,它 能很好提高工作效率. EditPlus的查找,替换,文 ...

  9. 身份证号码的正则表达式及验证详解(JavaScript,Regex)

    简言 在做用户实名验证时,常会用到身份证号码的正则表达式及校验方案.本文列举了两种验证方案,大家可以根据自己的项目实际情况,选择适合的方案. 身份证号码说明 居民身份证号码,正确.正式的称谓应该是&q ...

随机推荐

  1. 算法-搜索(3)AVL树

    AVL树高度平衡的二叉搜索树,任一点的平衡印章只能是+1.-1.0,从而尽量降低树的高度. 如果它有n个结点,高度可保持在O(log2n),平均搜索长度也可保持在O(log2n). (1)AVL树的插 ...

  2. 第2篇 Scrum 冲刺博客

    1.站立会议 照骗 进度 成员 昨日完成任务 今日计划任务 遇到的困难 钟智锋 无 确定客户端和服务器通信的形式 各成员的代码难以统一 庄诗楷 无 编写客户端UI 加入图片总是失败 易德康 无 马,车 ...

  3. MySQL 索引结构

    谈到 MYSQL 索引服务端的同学应该是熟悉的不能再熟悉,新建表的时候怎么着都知道先来个主键索引,对于经常查询的列也会加个索引加快查询速度.那么 MYSQL 索引都有哪些类型呢?索引结构是什么样的呢? ...

  4. SLS案例中心

    今日PV nginx日志查看今日的PV和昨日的对比,先通过count函数计算总的pv,再用compare函数得出今日的pv和昨日的同比. 通过单值图进行展示,显示值为20.381Mil,对比值为-2% ...

  5. 从零开始的SpringBoot项目 ( 八 ) 实现基于Token的用户身份验证

    1.首先了解一下Token uid: 用户唯一身份标识 time: 当前时间的时间戳 sign: 签名, 使用 hash/encrypt 压缩成定长的十六进制字符串,以防止第三方恶意拼接 固定参数(可 ...

  6. 原生 JavaScript30 练习 Day 1 (原生JS控制键盘模拟击鼓)

     代码如下   <!DOCTYPE html> <html lang="en"> <head>     <meta charset=&qu ...

  7. .net core学习笔记,组件篇:服务的注册与发现(Consul)初篇

    1.什么是服务注册中心? 在学习服务注册与发现时,我们要先搞明白到底什么是服务注册与发现. 在这里我举一个生活中非常普遍的例子——网购来简单说明,网购在我们日常生活中已经是非常普遍了,其实网购中的(商 ...

  8. 程序员软件开发最好的IDE集成工具eclipse各个版本的详细介绍。详细介绍,送给初学者的朋友

    对于刚接触软件开发的初学者,在下载eclipse时,对官网上面提供的各种版本的选择犹豫不决.下面将对常用的几个版本进行介绍. Eclipse版本 Eclipse Standard 该版本是eclips ...

  9. android开发之java代码中如何获取到当前时间。详情代码带注释。

    /** *获取当前时间 * @return */ public String getTime(){ Date date= new Date();//创建一个时间对象,获取到当前的时间 SimpleDa ...

  10. C001:打印勾

    程序: #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { printf(" *\n"); p ...