《2023年PHP知识:正则表达式基础知识.docx》由会员分享,可在线阅读,更多相关《2023年PHP知识:正则表达式基础知识.docx(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2023年PHP知识:正则表达式基础知识 PHP学问:正则表达式基础学问 为了关心学习者可以更好的学习PHP,我整理了PHP语言中正则表达式基础学问,盼望对大家有用,更多内容请关注应届毕业生网! 简介 正则表达式Regular Expression,缩写为regexp,regex或regxp,又称正规表达式、正规表示式或常规表达式或正规化表示法或正规表示法,是指一个用 来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在许多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本 内容。很多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建
2、了一个功能强大的在正则表达式引擎。正则表达式这个概念最初是由 Unix中的工具软件例如sed和grep普及开的。摘自维基百科 PHP同时使用两套正则表达式规则,一套是由电气和电子工程师协会IEEE制定的POSIX Extended 1003.2兼容正则事实上PHP对此标准的支持并不完善,另一套来自PCREPerl Compatible Regular Expression库提供PERL兼容正则,这是个开放源代码的软件,作者为 Philip Hazel。 使用POSIX兼容规则的函数有: ereg_replace ereg eregi eregi_replace split spliti sql
3、_regcase mb_ereg_match mb_ereg_replace mb_ereg_search_getpos mb_ereg_search_getregs mb_ereg_search_init mb_ereg_search_pos mb_ereg_search_regs mb_ereg_search_setpos mb_ereg_search mb_ereg mb_eregi_replace mb_eregi mb_regex_encoding mb_regex_set_options mb_split 使用PERL兼容规则的函数有: preg_grep preg_replace
4、_callback preg_match_all preg_match preg_quote preg_split preg_replace 定界符: POSIX兼容正则没有定界符,函数的相应参数会被认为是正则。 PERL兼容正则可以使用任何不是字母、数字或反斜线的字符作为定界符,假如作为定界符的字符必需被用在表达式本身中,则需要用反斜线转义。也可以使用, 和 <> 作为定界符 修正符: POSIX兼容正则没有修正符。 PERL兼容正则中可能使用的修正符修正符中的空格和换行被忽视,其它字符会导致错误: i PCRE_CASELESS: 匹配时忽视大小写。 mPCRE_MULTILI
5、NE: 当设定了此修正符,行起始和行结束$除了匹配整个字符串开头和结束外,还分别匹配其中的换行符n的之后和之前。 sPCRE_DOTALL: 假如设定了此修正符,模式中的圆点元字符.匹配全部的字符,包括换行符。没有此设定的话,则不包括换行符。 xPCRE_EXTENDED: 假如设定了此修正符,模式中的空白字符除了被转义的或在字符类中的以外完全被忽视。 e: 假如设定了此修正符,preg_replace 在替换字符串中对逆向引用作正常的替换,将其作为 PHP 代码求值,并用其结果来替换所搜寻的字符串。 只有 preg_replace 使用此修正符,其它 PCRE 函数将忽视之。 APCRE_A
6、NCHORED: 假如设定了此修正符,模式被强制为;anchored;,即强制仅从目标字符串的开头开始匹配。 DPCRE_DOLLAR_ENDONLY: 假如设定了此修正符,模式中的行结束$仅匹配目标字符串的结尾。没有此选项时,假如最终一个字符是换行符的话,也会被匹配在里面。假如设定了 m 修正符则忽视此选项。 S: 当一个模式将被使用若干次时,为加速匹配起见值得先对其进行分析。假如设定了此修正符则会进行额外的分析。目前,分析一个模式仅对没有单一固定起始字符的 non-anchored 模式有用。 UPCRE_UNGREEDY: 使;?;的默认匹配成为贪欲状态的。 XPCRE_EXTRA: 模
7、式中的任何反斜线后面跟上一个没有特别意义的字母导致一个错误,从而保存此组合以备将来扩充。默认状况下,一个反斜线后面跟一个没有特别意义的字母被当成该字母本身。 uPCRE_UTF8: 模式字符串被当成UTF-8。 规律区隔: POSIX兼容正则和PERL兼容正则的规律区隔符号作用和使用方法完全一致: :包含任选一操作的相关信息。 :包含匹配次数的相关信息。 :包含一个规律区间的相关信息,可被用来进行引用操作。 |:表示;或;,ab和a|b是等价的。 元字符与;相关: 有两组不同的元字符:一种是模式中除了方括号内都能被识别的,还有一种是在方括号;内被识别的。 POSIX兼容正则和PERL兼容正则;
8、之外;一致;的元字符: 有数种用处的通用转义符 匹配字符串的开头 $ 匹配字符串的结尾 ? 匹配0或者1 * 匹配 0 个或多个前面指定类型的字符 + 匹配 1 个或多个前面指定类型的字符 POSIX兼容正则和PERL兼容正则;之外;不一致;的元字符: . PERL兼容正则匹配除了换行符外的任意一个字符 . POSIX兼容正则匹配任意一个字符 POSIX兼容正则和PERL兼容正则;之内;一致;的元字符: 有数种用处的通用转义符 取反字符,但仅当其为第一个字符时有效 - 指定字符ASCII范围,认真讨论ASCII码,你会发觉W-c等价于WXYZ_abc POSIX兼容正则和PERL兼容正则;之内
9、;不一致;的元字符: - POSIX兼容正则中a-c-e的指定会抛出错误。 - PERL兼容正则中a-c-e的指定等价于a-e。 匹配次数与;相关: POSIX兼容正则和PERL兼容正则在匹配次数方面完全一致: 2:表示匹配前面的字符2次 2,:表示匹配前面的字符2次或多次,默认都是贪欲尽可能多的匹配 2,4:表示匹配前面的字符2次或4次 规律区间与;相关: 使用包含起来的区域是一个规律区间,规律区间的主要作用是表达出一些字符出现的规律次序,另一个用途就是可以用来引用可以将此区间内的值引用给一个变量。后一个作用比较奇怪: $str = " :/ 163 /" / POSIX
10、兼容正则: echo ereg_replace".+","1",$str; / PERL兼容正则: echo preg_replace"/.+/","$1",$str; / 显示两个链接 ?> 在引用的时候,括号是可以嵌套的,规律次序是根据;出现的次序来标定的。 类型匹配: POSIX兼容正则: :upper::匹配全部的大写字母 :lower::匹配全部的小写字母 :alpha::匹配全部的字母 :alnum::匹配全部的字母和数字 :digit::匹配全部的数字 :xdigit::匹配全部的十六进制字符,
11、等价于0-9A-Fa-f :punct::匹配全部的标点符号,等价于.,"&39;?!;: :blank::匹配空格和TAB,等价于 t :space::匹配全部的空白字符,等价于 tnrfv :cntrl::匹配全部ASCII 0到31之间的掌握符。 :graph::匹配全部的可打印字符,等价于: tnrfv :print::匹配全部的可打印字符和空格,等价于:tnrfv .c.:功能不明 =c=:功能不明 :<::匹配单词的开始 :>::匹配单词的结尾 PERL兼容正则这里可以看出PERL正则的强大: a alarm,即 BEL 字符’0 cx "
12、;control-x",其中 x 是任意字符 e escape’0B f 换页符 formfeed’0C n 换行符 newline’0A r 回车符 carriage return’0D t 制表符 tab’0 xhh 十六进制代码为 hh 的字符 ddd 八进制代码为 ddd 的字符,或 backreference d 任一十进制数字 D 任一非十进制数的字符 s 任一空白字符 S 任一非空白字符 w 任一;字;的字符 W 任一;非字;的字符 b 字分界线 B 非字分界线 A 目标的开头独立于多行模式 Z 目标的结尾或位于结尾的换行符前独立于多行模式 z 目标的结尾独立于多行模式 G 目标中的第一个匹配位置 PREV ARTICLEC语言中返回字符串函数的实现方法NEXT ARTICLE2023年全国计算机三级信息安全技术考试大纲