基于PHP的正则表达式

用法

从某个字符抽取信息

用新文本替换匹配的文本

把字符串拆分成小块字符串组成的数组

基础

preg_match('/需要匹配的正则表达式/', '字符串');

正则匹配模式

集合:

[xxxx]--一个字符串的可选范围,[ ^xxxxx]--一个字符串的不可选范围

选择性:

A|B: A或者B

重复序列: 重复模式 + 量词

量词

? --------------- 一次或者零次

* --------------- 零次或者多次

+ --------------- 一次或者多次

{n} ------------ n次

{n,  m} ------- 至少n次,至多m次

{n,  } -------------- 至少n次

贪婪

当匹配是遇到一个量词时,正则表达式引擎会尽可能多的匹配这个模式

非贪婪匹配(最少匹配), 在量词后面加一个问号

子模式: 使用小括号把几个正则表达式组合在一起

捕获模式

preg_match('/正则表达式/', string, array);

array保存子模式匹配到的子字符串(依次放到第一位,第二位......), 开始位置放置string。

非捕获模式

当某些子模式不需要在匹配到时捕获,可以改写子模式(subpattern)为(?:subpattern)

分隔符:

任何非数字字母字符都可以被用来当做分隔符,来区分分隔符与表达式。

字符类: 字符类中使用的命名字符集

[:alnum:] --------------------- [0-9a-zA-Z]

[:alpha:] ---------------------- [a-zA-Z]

......

eg: 要查找任意一个数字,字母,或者@

[@[:digit:][:upper:]]

Hint: 排序序列[st[.ch.]] 匹配s, t, ch的其中一个

 等价类[=XXX=]      匹配本地定义的具有相同排序序列的字符

锚(anchor): 将匹配限制在字符串中的特定位置

^ -------------------- 字符串、一行开始

$ -------------------- 字符串、一行结束

[[:<:]] -------------------- 单词开始

[[:>:]]  -------------------- 单词结束

......

后缀选项

perl风格的正则表达式允许把一个单个字符放在正则表达式后面,从而改变表达式的解析, 行为, 匹配方式。

后缀标识(一个模式中可以使用多个):

/regexp/i ------------- 匹配大小写

/regexp/s ------------ 使句点匹配任何字符

/regexp/x ------------ 去掉空白和注释

/regexp/m ------------ 使得^匹配换行符之后的内容,$匹配换行符之前的内容

......

内联选项

内联选项可以在一个模式内部指定仅运用于部分模式的后缀选项

(?flags:subpattern) 	设置内联选项

(?-flags:subpattern)	取消模式后面的选项

((?flags:subpattern))	内联标志不能用于捕获数组,需要额外设置一个小括号来完成捕获

前向/后向断言

待填坑

条件表达式

(?(condition)yespattern\nopattern)

函数

匹配: preg_match(pattern, string[, captured]);

替换: preg_replace(pattern, replacement, subject[, limit]);

拆分: preg_split (pattern, string) (pattern表示分割块)

过滤数组: preg_grep (pattern, array) 返回给定模式匹配的所有元素、

构造指定正则表达式: preg_quote (string );
posted @ 2016-08-21 19:56  罗茜  阅读(149)  评论(0编辑  收藏  举报