您的位置:首页 > 其它

正则表达式元字符以及模式修正符

2018-03-22 20:24 260 查看
<?php

function reg($reg, $str) {

preg_match($reg, $str, $res);
var_dump($res);
echo '<br>';
}

//可以匹配回车
reg("/\n/", '
');
//可以匹配空
reg("/\s/", ' ');
//+ 号 匹配前面的字符1次或者多次
reg("/test+/", 'testt');
//. 代表任意一字符,不能匹配\n
reg("/./", "\n");
//^以某某开头
reg('/^a/', 'ab');
//* 代表前面的字符可以出现0到1次和多次
reg('/a*/', 'aaaaaaa');
//* 代表前面的字符可以出现1次和多次
reg("/a+/", "");
//? 代表前面的字符可以出现0次和1次
reg("/a?/", "bcd");
//{n} 代表前面原子只能匹配n次
reg("/a{1}/", "aa");
//{n} 代表前面原子至少匹配n次
reg("/a{2,}/", 'aa');
//{n,m}
reg("/a{2,5}/", "aaaaaa");
//| 两边出来一个就好
reg("/cn|com|top/", "tops");
//$ 以..结尾
reg('/cn|com|top$/', 'tops');
// () 提高优先级 ()内的内容表示的是一个子表达式,
// ()本身不匹配任何东西,也不限制匹配任何东西,
// 只是把括号内的内容作为同一个表达式来处理,
// 例如(ab){1,3},就表示ab一起连续出现最少1次,
// 最多3次。如果没有括号的话,ab{1,3},就表示a,
// 后面紧跟的b出现最少1次,最多3次
reg("/(ab){1,3}c/", 'abc');
/* 模式中的\b标记一个单词边界,所以只有独立的单词"web"会被匹配,而不会匹配webc*/
reg("/\bweb\bc/", "webc");
//[^abc] 不包括abc
reg('/[^abcd]/', 'abcadfadf');
echo '<hr>';
/******************************* 模式修正符号 **************************/

//模式修正符,i不区分大小写
reg("/test+/i", 'tesTT');
//修正符号m,将匹配字符串看成是多行而不是默认的单行,中间不能有空格。。。。
reg("/^abc/m", "ab
aaa
abc");
//修正符号s,把字符串看做是一行 .匹配不了\n
reg("/a.*c/s", "abjalkj\nc");
//x 忽略空格
reg("/a c/x", 'ac');
//贪婪
reg('/<a href=".*">/', '<a href="a.php">bbb</a><a href="c.php">aaaa</a>');
//非贪婪
reg('/<a href=".*">/U', '<a href="a.php">bbb</a><a href="c.php">aaaa</a>');
//非贪婪
reg(<
a048
span class="hljs-string">'/<a href=".*?">/', '<a href="a.php">bbb</a><a href="c.php">aaaa</a>');
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: