php正则表达式的三个最基本原则分享

  我个人认为,正则表达式的常规用法可以分为如下三个最基本的原则:1、找谁、2、怎么找、3、找它干什么。

  接下来,我分享一下一个正则表达式分三个部分:

  原子字符

  . 匹配除换行符以外的任意字符

  \w 匹配一个字母或数字或下划线

  \s 匹配一个空白符

  \d 匹配一个数字

  \b 匹配单词的开始或结束的位置(匹配一个位置)

  ^ 匹配字符串的开始

  $ 匹配字符串的结束

  表示范围

  [] 匹配括号中的任意一个字符

  量词

  重复0次或更多次

  重复1次或更多次

  ? 重复0次或1次

  {n} 重复n次

  {n,} 重复n次或更多次

  {n,m} 重复n到m次

  反义

  \W \w取反

  \S \s取反

  \D \d取反

  \B \b取反

  [^x] 匹配除了x以为的任意一个字符

  [^abcde] 匹配除了abcde以为的任意一个字符

  分支

  | 表示分支,在[]中无效,匹配分支条件时,从左往右匹配,当匹配到某个分支时结束,不会再考虑后面的分支

  分组

  捕获

  (exp) 匹配exp,并捕获文本到自动命名的组里

  (?exp) 匹配exp,并捕获文本到名为name的组里

  (?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号

  零宽断言

  (?=exp) 匹配exp前面的位置

  (?<=exp) 匹配exp后面的位置

  (?!exp) 匹配后面跟的不是exp的位置

  (?

  注释

  (?#comment) 提供注释辅助阅读,不对正则产生任何影响

  反向引用

  \1 引用第一个分组子匹配

  \n 引用第n个分组子匹配

  \k 引用命名为name的分组子匹配

  懒惰模式

  *? 任意次

  +? 一次或多次

  ?? 0次或1次

  {m,n}? m-n之间

  {m,}? 至少m

  常用正则

  /^\d+$/ 非负整数

  /^[1-9]+[0-9]$/ 正整数

  /^-\d+$|0/ 非正整数

  /^-[1-9]+[0-9]$/ 负整数

  /^[\w-.][email protected][\w-.]+(.[\w-]+)+$/ email地址

  <(.)>.<\/\1>|<. \/> html标签

  <[img|IMG].?src=\‘|\"[\‘|\"].*?[\/]?>

  提取img标签的src值。

(来源:程序员)

原文地址:https://www.cnblogs.com/pengpeng1208/p/9110583.html

时间: 2024-10-03 17:16:55

php正则表达式的三个最基本原则分享的相关文章

正则表达式(三)

元字符 "{n}"."{n,}"."{n,m}" "{n}" 匹配确定的n次(n是一个非负整数). 例如:o{2}能匹配"zoo". "{n,}" 匹配至少n次(n是一个非负整数). 例如:o{1,}能匹配"zo"以及"zoo". "{n,m}" 匹配n至m次,n<=m,最少n次且最多m次,(n,m均为非负整数). 元字符

perl正则表达式第三周笔记

正则引擎的分类 正则引擎的分类 正则引擎的分类主要分两种: DFA:egrep.awk.lex.flex NFA:.NET.PHP.Perl.Ruby.Python.GNU Emacs.ed.sec.vi.grep等 NFA的历史比DFA久一点,但两种引擎都发展了20多年,产生了很多变体,POSIX的出现就是为了规范这种现象.POSIX不但规定了元字符的特性,而且规定了正则表达式应该用什么样的方式运作. DFA符合POSIX的标准,但NFA如果要符合POSIX标准,就要作出相应的修改 所以引擎可

金三银四,分享自己找工作的经历

博主在原公司工作了一年三个月,本来年后是找工作的高峰期,而三月份找工作是最有利的.但是出于团队对博主的赞赏有加,外加和领导私人关系也非常不错,所以没想着跳槽.但是一想到自己的房贷和家父的白发,博主内心其实是苦涩不堪.尽管领导非常器重我,让我做项目经理,博主在部门中的声望也极高,部门唯一一个S级特级绩效也给了博主,但是苦于薪资谈判一直进展不顺,博主辞职之心日益强烈.于是某日晚上,博主想通了,还是辞职吧,自己也需要更大的舞台.为了表示对领导的尊重,博主第二天一大早到公司就和领导坦白了,领导也没画大饼

正则表达式的三种模式【贪婪、勉强、侵占】的分析

假定要分析的字符串是xfooxxxxxxfoo 模式.*foo (贪婪模式): 模式分为子模式p1(.*)和子模式p2(foo)两个部分. 其中p1中的量词匹配方式使用默认方式(贪婪型). 匹配开始时,吃入所有字符xfooxxxxxx去匹配子模式p1.匹配成功,但这样以来就没有了字符串去匹配子模式p2.本轮匹配失败:第二轮:减少p1部分的匹配量,吐出最后一个字符, 把字符串分割成xfooxxxxxxfo和o两个子字符串s1和s2. s1匹配p1, 但s2不匹配p2.本轮匹配失败:第三轮,再次减少

JavaScript正则表达式(三)

正则表达式可以: •测试字符串的某个模式.例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式.这称为数据有效性验证 •替换文本.可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字 •根据模式匹配从字符串中提取一个子字符串.可以用来在文本或输入字段中查找特定文字 正则表达式语法 一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式.该模式描述在查找文字主体时待匹配的一个或多个字符串

第三记“晋IT”分享成长沙龙

2014年8月17日下午4点-7点,第三期"晋IT"分享成长沙龙在太原大自然蒙特梭利幼儿园多功能厅成功举办. 8月17日下午两点.小编领先来到场地,提前探訪一下准备情况. "晋IT"分享成长沙龙举办地:太原大自然蒙特梭利幼儿园,位于体育路长风街交叉口附近,途经该地点的公交有:824.849.51.877.840.812等. 详细在地图上的位置见下图: 天宫不作美,已经准备飘起小雨,小编按着宣传内容找到了这块宝地.顺着楼梯走上去.走近看见门上的一个不起眼的指示单. w

正则表达式 第三篇:分组匹配

通常情况下,分组是用一对圆括号“()”括起来的正则表达式,匹配出的内容就表示一个分组.分组有一个例外的情况,分组也可以不使用圆括号,而是使用 | 元字符来表示分组,| 的两侧是两个分组. 当使用圆括号表示分组时,从正则表达式的左边开始看,看到的第一个左括号“(”表示第一个分组,第二个"("表示第二个分组,依次类推,需要注意的是,有一个隐含的全局分组(就是0),就是整个正则表达式.默认情况下,正则表达式为每个分组自动分配一个组号,规则是:组号从1开始,从左向右,组号依次加1(base+1

正则表达式第三回--模式、分组与前瞻

贪婪的正则 正则是默认贪婪的,它会尽可能多的匹配,我想这是一个大家都知道的事实. 经典例子: '12345678'.replace(/\d{3,7}/g, '#') // 输出: #8 可以看到,规则是匹配3~7个数字,由于正则默认是贪婪模式,匹配了最大数量7个: 如果我们希望它尽可能少的匹配,也就是说一旦匹配成功就不继续匹配了,只需要在量词后面加个问号即可. '12345678'.replace(/\d{3,7}?/g, '#') // 输出: ##78 分组 我们知道,量词是作用于紧挨着它的

Task三个列子的分享

这次要分享的是C#Task任务的几个列子,感觉最实用的是封装的分页任务执行方法,这个方法步奏也是目前在我工作中执行多任务常用的,不知道各位也有这用的情况,那么开始吧. 1.顺序任务执行   上面的代码中也备注了一些文字说明,其中有关键词语及意思如下: .Task.Factory.StartNew:创建一个Task实例,创建后自动开启,无需在调用Start: .ContinueWith:看单词的意思就明了,是继续的意思,在这里的效果也是等待上一个Task执行完毕了在继续执行本次任务,这里方法里面每