php基础8———正则表达式1
来源:互联网 发布:php写文件换行 编辑:程序博客网 时间:2024/06/16 11:50
正则表达式并不是某个语言特有的,只能说是某个语言是否支持正则。
正则表达式也可以看做是一个语言。
1,正则表达式是描述字符串排列组合的一种自定义的语法规则。
2,能用字符串处理函数完成的任务,就不要使用正则。
3,有一些复杂的操作,只能用正则完成。
4,正则表达式必须与函数一起使用,与不同的函数搭配起到不同的作用
在php中有两套正则表达式函数库:
1,POSIX 扩展正则表达式函数(php4),以ereg_开头
2,perl 兼容正则表达式函数(php5),以preg_开头
这两套函数的功能一样,但perl比POSIX的效率要高,所以推荐使用perl
所以这里只学perl兼容的。
一,正则的语法: “/原子和元字符/修正符”,这里的“/”是定界符,有些语言是不需要定界符的
1,定界符:除了字母,数字和正斜线“\”之外的任何字符都可以为定界符
如 “| |” “/ /” "{ }" "!!",没有特殊需要就使用 “/ /”
2,原子:原子是正则表达式的最基本的组成单位,一个正则表达式,至少必须包含一个原子,可以单独出现
如下:
1,所有打印字符:可以在屏幕上输出的字符串
2,非打印字符:看不到的,如空格等
3,如果是有特殊意义的字符,就需要用“\”来转义,只要你怀疑是特殊的字符,都可以用转义字符来转义
如 . * + ? 等 ====> \. \* \+ \?
4,一些特殊含义的原子:
\d :代表任意一个十进制的数字 ======== [0-9]
\D :代表任意一个出数字之外的字符 ======== [^0-9]
\s :任意一个空白符,如:空格,\n\r\t\f等 ======== [\n\r\t\f ]
\S :表示任意一个非空白符 ======== [^\n\r\t\f ]
\w :表示任意一个字 a-zA-Z0-9_ ======== [a-zA-Z0-9_]
\W :任意一个非字 ======== [^a-zA-Z0-9_]
等
5,可以自己定义元字符,用【】,代表匹配【】中的任意一个元字符
【】中可以使用-,表示一个范围
【】中的^,表示取反,表示出了原子表中的其它所有原子,^必须放在最前面
3,元字符:一种特殊的字符,是来修饰原子的,不可以单独出现,若想要单独出现需要转义
* :表示其前一个原子可以出现0次,1次,或多次===========>{0,}
+:表示其前一个原子可以出现1次,或多次 ===========>{1,}
?:表示其前一个原子可以出现0次或1次,要么有,要么没有===>{0,1}
{ }:定义前面原子出现的次数,
{n}:代表前面的原子出现n次,必须是n次
{m,n}:代表前面的原子出现m到n次
{n, }:代表前面的原子最少出现n次
. :默认情况下,表示除 换行符 外的任意一个字符
^:当^不放在【】中时,如"^abc",表示字符串必须以abc开头
&:如"abc$",表示字符串必须以abc结尾
| :表示或的关系:如"a|b",表示a或b,它的优先级最低:如"abc|def"表示abc或def,而不是abcef或abdef
\b:表示一个边界(空格)
\B:表示一个非边界(空格)
( ):-------比较重要
1,作为大原子使用,表示一些原子的整体:如"(abc)|(def)",表示abc或def
2,改变优先级
3,作为子模式使用,表示只取出括号中的模式
4,可以用(?: ),取消子模式,只作为大原子使用
5,反向引用:可以在模式中直接将子模式取出来,在作为正则表达式的模式的一部分,
如果是在正则表达式像替换函数preg_replace函数中,可以讲子模式取出,在被替换的字符串中使用
\1 表示取出第一个子模式 \2 表示取出第二个子模式 \3 表示取出第三个子模式 等等
注意是单引号还是双引号引起来的正则,双引号需要这样"\\1",单引号这样"\1"
4,模式修正符号:是对整个正则表达式调优用的,也可以说是对正则表达式的扩展
1,就是几个字母,每个字母代表不同的意义
2,可以一次使用一个,也可以一次使用多个
如:
i---------------表示不区分大小写
m-------------默认情况,将字符串视为一行,加上m可以表示多行,意思就是原来是什么就是什么
s--------------表示单行,与m的意思相反,元字符中的"."默认不能表示换行符号,将字符串视为单行
加上m后,"."代表换行符,就改变了点的意义
x---------------表示模式中的空白,忽略不计
e---------------必须使用在preg_replace函数中
U---------------表示非贪婪模式,"?"也可以表示非贪婪模式
A-------------- ^
Z--------------- $
- php基础8———正则表达式1
- php基础9———正则表达式2
- php正则表达式—实战
- Java基础—正则表达式
- 【PHP基础知识】——PHP正则表达式
- PHP正则表达式基础
- PHP正则表达式基础
- PHP正则表达式 - 基础
- PHP基础正则表达式
- PHP基础-正则表达式
- php正则表达式—基本语法
- php正则表达式—修正模式
- php正则表达式—仿smarty
- 正则表达式基础——笔记
- java基础——正则表达式
- Java基础——正则表达式
- JavaSe基础XX22——正则表达式
- JS基础系列——正则表达式
- LINUX Command: chmod
- 基于OSGi的Virgo环境搭建二-集成Snaps
- win7 32位安装 python 及Numpy、scipy、matplotlib函数包
- json前后台使用
- BWAPI 系列 第一 配置jni-bwapi
- php基础8———正则表达式1
- 如何在调用线程的时候传递参数
- hdu1297 - Children’s Queue (递推求解 + 高精度)
- 利用栈实现简单算术表达式求值
- 6. Java 虚拟机及Java的跨平台特性
- 几种优秀的开发ASP的工具
- 现在几乎所有的免费信箱都需要smtp验证
- PLSQL连Oracle数据库登陆时缺少“连接为”选项框,并且提示Could not load "……\bin\oci.dll"
- 常用下载工具与编程书籍