• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >正则表达式 > 自己学正则时做的笔记,其实正则也不难哦 php

自己学正则时做的笔记,其实正则也不难哦 php

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了时分秒正则表达式,正则表达式匹配时分秒,php 时分秒,php年月日时分秒,php获取视频时长等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
RT,正则可以搞定的东西很多哦,大家学习学习吧

一.正则表达式
1.匹配符
    1)头匹配符"^":如^0754,只匹配开头为0754的字符串
    2)尾匹配符"$":如0754$,只匹配结尾为0754的字符串
    3)全字匹配:将^和$结合,如^0754$,匹配0754字符串
2.转义字符
    1)空字符:
        换行\n
        回车\r
        制表符\t
    2)其他字符:
        "$" \$
        "^" \^
        "+" \+
        "/" \/
3.通配符
    1)*号:用来匹配前面一个字符是否在字符串中出现零次或多次.
    例1:'abc*',匹配含有ab的所有字符串。
    2)+号:......................................一次或多次.
    例2:'abc+',匹配含有abc的所有字符串。
    3)?号:......................................零次或一次.
    例3:只匹配含有ab、abc结尾不再含c的字符串。如abca,aabc,aaab都可以,但abcc就不行。
4.关于转义字符\$与双、单引号(php4环境)
    1)正则表达式本身就是一个字符串。
    2)当引号中含有$时,用双、单引号定义就有区别,区别如下:
        (1)使用单引号定义时,解释器会把引号内所有字符(包括$在内)都原封不动的赋值给字符串变量。
        (2)使用双引号定义时,解释器会把引号内"$"字符以及其后的合法字符(字母、数字、下划线)翻译成变量,直到遇到一个非法字符才认为变量名结束,该非法字符及其后面的字符都被视为一般字符赋给字符串变量,直到遇到下一个"$"为止。
        (3)注意:单个$出现在双引号的尾部,并且其后面不再有任何字符的时候,解释器不会将其翻译成变量。也不需要加转义\,当然不提倡。
        (4)如果待匹配的字符中本身就有$,就无法用双引号来定义这个正则表达式,原因是转义字符\$在单,双引号中表示的意义不同:
            <1>双引号中,\$和单个的$意义是一样的,都是代表尾匹配符,因此c\$$=c\$=c\$\$=c$=c\$\$;双引号中,\$在任何时刻都只代表一个字符"$",echo "c\$$"结果是c$$,并且\$和单个的$(单个的$是指该$无法和其后字符组成变量名)是完全等效的,都是尾匹配符,所以双引号中是无法写入作为非尾匹配字符的字符"$"的,也正是这个原因,大多数需要匹配$时定义正则表达式只能用''。
            <2>单引号中,\$的意义仅仅表示字符"$",尾匹配符是$,不管后面是否有合法变量名字符;单引号中,\$其实是两个字符,如不用于正则匹配将没有任何意义,echo 'c\$$'结果仍是c\$$。单作为正则表达式来使用,单引号中的\$表示的是特殊字符"$",而尾匹配符就是单独的$字符。
    3)正则表达式的尾匹配符"$"和变量的定义符是相同的:
        例1:定义正则表达式为^ab$:$pattern="^ab\$";转义字符\$在双引号中就表示字符$,结果是^ab$。
        例2:如上题,使用$pattern="^ab$";显然是错误的,但是由于$在尾部,后面没有其他字符,所以依然适用。
        例3:以字符组合c$结尾的正则表达式:$pattern='c\$$';
        例4:如上题,$pattern="c\$$";正则表达式将\$视为尾匹配符,故只匹配以c结尾。
5."[]"方括号(字符簇)用法
    1)[]匹配一个字符,在[]中使用^开头表示取非,即其后的字符全部是不匹配的。
    例1:[a-zA-Z0-9]匹配所有大小写字母和数字。
    例2:[\n\t\r\f]匹配所有空字符。
    例3:[^A-Z]不匹配大写字母。
    例4:^[^0-9]匹配不以数字开头的字符或字符串
    2)特殊字符"."(句点)匹配除了"新行"之外的所有字符,模式^.abc$匹配任何以abc结尾的字符,但是不能匹配其本身。模式"."则可以匹配任何字符串,除了空字符串和只有一个"新行"字符的字符串。
    例1:'^.abc$';匹配所有尾部含有abc的字符串,不匹配小数(新行),当不匹配abc。
    例2:'.';匹配所有字符串,但不匹配空值。
    例3:'.abc';匹配所有含abc的字符串,小数等等都可以,前提是不以abc为首,不匹配abc。
    例4:'.abc$';匹配所有以abc结尾的字符串,任何小数等等都可以,不匹配abc。
    3)php提供了内置通用字符簇:
    [[:alpha:]]任何字母
    [[:digit:]]任何数字
    [[:alnum:]]任何字母和数字
    [[:space:]]任何空白字符
    [[:upper:]]任何大写字母
    [[:lower:]]任何小写字母
    [[:punct:]]任何表点符号
    [[:xdigit:]]任何十六进制数字
    [[:cntrl:]]任何ASCII值小于32的字符
    注意:以上字符簇有个特点,只要被匹配的字符或字符串中有此字符,即匹配正确,不管字符串是以什么方式组成的。
6."{}"大括号用法
    1)方括号只能匹配一个字符,而匹配多个字符只能用{}实现:{}用来确定前面内容出现的次数。{n}表示出现n次;{m,n}表示出现m~n次,包括m和n次;{n,}表示出现n次或者n次以上。
    例1:^a{10}$;匹配aaaaaaaaaa。
    例2:[0-9]{1,}$;匹配所有>0的数。
    2)"{}"与通配符之间的关系
    ?  相当于 {0,1} 零次或一次
    *  ..... {0,} 零次或无数次
    +  ..... {1,} 一次或无数次
7."()"用法
    圆括号"()"括住的pattern表示子模式,如$pattern='([1-9]{1}[0-9]{3})-([0-1]{1}[1-2]{1})-([0-3]{1}([0-9]|))';()扩住的就是一个个子模式,()相当于把他们独立起来,分别匹配而相互不干扰。
二.POSIX风格正则表达式函数
1.ereg
    ereg(pattern,string,[array $regs]);
    eregi(pattern,string,[array $regs]);
    ereg函数在string中找到满足pattern模式的文本,如果找到true,没找到false。如果有第三个参数$regs,那找到的文本将放在$regs[0]中,并且regs数组中将一次存放各个圆括号表达的子模式匹配的结果。$regs[1]中存放了第一个子模式所匹配的结果,$regs[2]中是第二个,顺序从左到右,依次类推。如果没有找到匹配的文本,$regs数组的值不会被改变。
    注意:如果找到了匹配的文本,不管找到的子模式是多少个>9还是<9,ereg()只会改变$regs数组前10个元素的值。但是这不会影响函数对子模式组合的匹配结果。ereg总是先匹配完,如果没发现匹配的文本就false,发现了就true。如果有子模式,会逐步根据这些子模式重新在字符串中寻找匹配的文本,直到$regs数组被填满10个元素或者所有子模式被匹配完,如果子模式少于10则剩余的$regs将被赋空值。总之一句话,匹配归匹配,$regs归$regs,$regs只有10个值。
    eregi()函数与ereg()基本用法相同,只是eregi对大小写不敏感。
2.ereg_replace和eregi_replace
    ereg_replace(pattern,string replacement,string)
    eregi_replace(pattern,string replacement,string)
    string字串中满足pattern的文本将被替换成replacement。如果string中有pattern匹配的文本,那么返回替换之后的值,如果没有,则返回原来的string值。
    如果pattern中包含子模式,子模式可以有选择的被保留而不被替换。
    例1:pattern中的第二个子模式不被替换,replacement可写成这样:replacement\\2。这样string中匹配的pattern的字符串将被替换为replacement+pattern2,pattern2表示匹配pattern的文本中又匹配pattern的第二个子模式的文本。如果使用"\\0"表示保留整个匹配文本。利用这个特性可以实现在特定的字符串之后插入文本的操作。
    replacement必须
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 自己学正则时做的笔记,其实正则也不难哦 php

相关文章

  • 2017-05-11最新版网址替换正则表达式
  • 2017-05-11Java 正则表达式匹配模式(贪婪型、勉强型、占有型)
  • 2017-05-11JavaScript 正则表达式验证函数代码
  • 2017-05-11去除内容中的html
  • 2017-05-11学习正则表达式30分钟入门教程(第二版)
  • 2017-05-11正则表达式的字符串替换方法
  • 2017-05-11JavaScript 正则表达式(笔记)
  • 2017-05-11检测八位数字是否为有效日期的正则
  • 2017-05-11正则表达式判断所填入号码的运营商js代码修改版
  • 2017-05-11正则表达式匹配 非XXX的行

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • php匹配网址的正则 几乎可以匹配任何网址
    • asp下正则实现URL自动链接的一个函数
    • 详解js正则表达式语法介绍
    • 基于Python正则表达式提取搜索结果中的站点地址
    • 正则表达式技术详解 Regular Expression
    • JS 正则表达式中小括号的应用
    • PHP正则表达式抓取某个标签的特定属性值的方法
    • Python正则表达式之基础篇
    • JScript中正则表达函数的说明与应用
    • PHP 正则表达式常用函数使用小结

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有