正则表达式--php基础最详细教程


正则表达式简介 原创



概念: 正则表达式是用于描述字符排列和匹配模式的一种语法规则。它主要用于字符串的模式分割、匹配、查找及替换操作。


作用:
1.匹配,也常常用于从字符串中析取信息。
2.用新文本代替匹配文本。
3.将一个字符串拆分为一组更小的信息块。


说明:
如果可以使用字符串处理函数处理的任务,就不用使用正则。有一些复杂的操作,只能使用正则完成。
正则表达式也称可以在很多计算机语言中的应用。正则表达式也称为一种模式表达式。正则表达式就是
通过构件特定的规则模式与输入的字符信息比较。再进行分割匹配、查找、分割、替换等工作。


学习正则表达式时,有两方面需要学习:
一、正则表达式的模式如何编写
二、学习正则表达式的强大处理函数


正则表达式的语法规则


语法规则概述


特点:
一、正则表达式是一个字符串
二、由具有特殊意义的字符组成的字符串
三、具有一点编写规则也是一种模式
四、看作是一种编程语言(是用一些特殊字符按规则编写出一个字符串形成一种模式--正则表达式)
注意:如果正则表达式不和函数一起使用,则它就是一个字符串,如果将正则表达式放在到某个函
数中使用,才能发挥出正则表达式的作用。
      用到分割函数中,就可以用这个正则去分割字符串。
      用到替换函数中,就可以用这个正则去替换字符串。
。。。。。。
   “/\/”


定界符


说明:
除了字母、数字和反斜线“\”以外的任何字符都可以为定界符
||
//   默认
{}
!!
注意:没有特殊需要我们都使用正斜线作为正则表达式的定界符号


原子


概念:原子是正则表达式的最基本组成单位,而且必须至少要包含一个原子。只要
     一个正则表达式可以单独使用的字符,就是原子


1.所有打印和非打印机字符
打印(可以在键盘上输出的字符A-Z a-z 0-9非打印字符(回车、空格、无法在屏幕上输出的)
2. . * + ? <> 如果所有有意义的字符想作为原子使用,统统使用“\”转义字符转义这些有意义的字符,可以
      将有意义的字符转成没有意义的字符,这个可以将没有意义的字符转为有意的。
3. 在正则表达式中可以直接使用一些代表范围的原子:
      \d:表示任意一个十进制的数字 [0-9]
      \D:表示任意一个除数字之外的字符[^0-9]
      \s:表示任意一个空白符 [\n\t\f\r] 空格 回车 Tab键
      \S:表示任意一个非空白符 [\n\t\f\r] 空格 回车 Tab键。
 \w:表示任意一个字a-zA-Z0-9_  [A-Za-z0-9_]
      \W:表示任意一个非字除a-zA-Z0-9_     [^A-Za-z0-9_] 
4.自己定义一个原子表,使用[]可以匹配括号中的任何一个原子。
      [abc567] 匹配 a或b或c或5或6或7  
      [a-f]  [3-5] [-]表示一段范围。a到f  3到5 包括 a f 3 5
      [^a-g]    [^]取反就是除了原子表中的原子。


正则表达式中常用的非打印字符:
\cx 匹配由x指明的控制字符。如\cM匹配一个Control-M或回车符。x的值必须为A~Z或a~z之一。
\f 匹配一个换页符。等价于 \x0c或\cL
\n 匹配一个换行符。等价于 \x0a或\cJ
\r 匹配一个回车符。等价于 \x0d或\cM
\t 匹配一个制表符。等价于 \x09或\cI
\v 匹配一个垂直制表符。等价于 \x0b或\cK




元字符


概念:元字符是一种特殊的字符,是用来修饰原子用的,不可以单独出现。


* :表示其前的原子可以出现0次、1次或多次(任意次)。  {0,}
+ : 表示其前的原子可以出现1次、或多次。    {1,}
?  : 表示其前的原子可以出现0次、或1次。     {0,1}
.   : 默认情况下除换行符外任意一个字符。
|   : 表示或者的关系 cat|dog   com|cn 优先级最低,优先匹配 cat或dog com或cn
\b : 表示一个边界   \bis\b    This is island     is  边界:空格和字符串行首行尾。
\B : 表示一个非边界  \Bis\b  This is island   This 的 is  非空格。
{  } 详解:
{m}  m表示一个整数,{5}表示前面的原子出现5次。
{m,n} m和n表示一个整数,m要少于n 表示前面的原子最少m次,最多n次。
{m,}   表示前面的原子最少出现m次,最多不限。
^  :只能在一个正则表达式的第一个字符出现,则表达式必须以这个正则表达式开始  ^one
$    : 只能在一个正则表达式的最后一个字符出现,则表达式必须以这个正则表达式结尾 one$
( ) 详解:
一、作为大原子子使用   (ftp)+
二、改变优先级    ca(t|d)og
三、作为子模式使用,正则表达式不光对一个字符匹配一次
四、可以取消子模式就( )作为大原子和优先级使用(?: )在括号中原子的前面使用 ?:取消子模式
五、反向引用可以在模式中直接将子模式取出在作为正则表达式一部分,如果是在正则表达式像
      替换函数preg_replace 函数中可以将子模式取出,在替换字符串使用 
  单引号中  \1 \2 \..   双引号中 \\1  \\2 \\..
  其他位置使用使用子模式可用 ${1}  ${2}  ${..} 不能在正则表达式中用。 
注意:是单引号和双引号括起来的正则;


优先级:由高到低
1 \ 转义字符
2 ()  (?:)  (?=)  [] 模式单元和原子表
3 *  +   ?  {n}  {n,} {n,m} 重复匹配
4 ^  $  \b  \B  \A   \Z 边界限制
5 | 模式选择




模式修正符


概念:是对原子和元字符功能上的扩展和补充。
“/       /模式修正符”
1.就是几个字母而已
2.可用一次使用一个 每个具有一定的意义,也可以使用多个
3.是对整个正则表达式调优使用也可以说是对正则表达式功能的扩展


常用模式修正符号:
i  :表示在此模式下匹配不区分大小写
m :默认情况将字符串视为一行,加m 会识别字符串中的回车换行 及识别多行  那么每行都可以存在^ $ 这样的开头和结尾匹配元字符修饰
s  :如果没有使用这个模式修正符号时元字符中"."默认不表示换行符号,而是表示任意一个字符。
x  :模式中的空白忽略
A  :必须以什么开头
Z  :必须以什么结尾
U  :正则表达式特点就是”贪婪“    .*  .+ 都会引发贪婪
     一、使用模式修正符 U 来关闭贪婪
     二、使用?取消贪婪模式   .*?  .+?
     三、一和二同时使用还是会开启贪婪。


与Perl兼容的正则表达式函数


说明:在PHP中给我们提供两套正则表达式函数库:
POSIX 扩展正则表达式函数(ereg_)
Perl 兼容正则表达式函数(preg_)
这个两个函数库功能一样,找个处理效率高的
注意:推荐使用Perl兼容正则表达式函数库(只学这个)






字符串的匹配和查找


字符串的替换


字符串的分割和连接


实例:文章发布操作示例


正则表达式--php基础最详细教程_第1张图片

你可能感兴趣的:(php)