原子
. 任意一个字符
\w 字母、数字、下划线
[abc] 它里面的任意一个字符
[^abc] 它里面除了abc的任意一个字符
() 它里面的所有人代表一个单元
\d 任意一个数字
\D 任意一个非数字
\w 任意一个字母、数字、下划线
\W 除了字母、数字、下划线以外的任意一个字符
\s 空白字符
\S 除了空白字符以外任意一个字符
元字符:
* 0个、一个、多个
+ 一个、多个
? 0个、一个
| 或
^ 以什么开关
$ 以什么结尾
\b 词边缘
\B 非词边缘
{2} 2个原子 // $sub="php is veryvery much" ; $ptn='/(very){2}/'
{2,} 2个以上原子
{2,5} 2-5个以上原子
模式修正符
/正则表达式/U
i 忽略大小写
$str='LINUX and php are lamp or linux hello world'
$ptn='/linux/i'
preg_match_all($ptn,$str,$arr);
m 视为多行
$str="LINUX and php are lamp \n linux hello world"
$ptn='/^linux/im'
preg_match_all($ptn,$str,$arr);
s 视为一行
$str="LINUX and php are lamp \n linux hello world"
$ptn='/.*/s'
preg_match_all($ptn,$str,$arr);
U 贪婪模式,最大模式
$str="<b>LINUX</b> and php are lamp or <b>linux</b> hello world"
$ptn='/<b>.*<\/b>/U'
或者 $ptn='/<b>[^<]*<\/b>/'
preg_match_all($ptn,$str,$arr);
e 替换的时候用的,可以用函数加工向后
$str="123 linux"
$ptn='/\d+\s(w+)/e'
$rep='strtoupper(\\1)'
$str2=preg_replace($ptn,$rep,$str);
$str="12-05-2017";
$ptn='/(\d+)-(\d+)-(\d+)/';
$rep=‘$3/$1/$2’;
$str2=preg_replace($ptn,$rep,$str);
$str="[b]bbbbb[/b][i]iiiii[/i][img]hello.gif[/img]";
$ptn=array(
'/\[b\](.+)\[\/b\]/',
'/\[i\](.+)\[\/i\]/',
'/\[img\](.+)\[\/img\]/',
);
$rep=array(
'<b>$1</b>',
'<i>$1</i>',
'<img src="$1">',
);
$str2=preg_replace($ptn,$rep,$str);