<?php
echo "-------------基础-----------------------<br>";
$userinfo = "Name: <b>PHP</b> <br> Title: <b>Programming Language</b>";
preg_match_all ("/<b>(.*)<\/b>/U", $userinfo, $pat_array);
print_r($pat_array[0]);
echo "<br>";
print_r($pat_array[1]);
echo "<br>";echo "<br>";
echo "-------------普通字符作为原子-----------------------<br>";
//普通字符作为原子
$pattern = '/abc/U';
$str = 'abcdefghijklmn';
preg_match_all($pattern,$str,$res);
var_dump($res);
echo "<br>";echo "<br>";
echo "-------------特殊符号的字符作为原子-----------------------<br>";
//特殊符号的字符作为原子
$pattern = '/\[php\]/';
$str = '0123456[php]12345[php]';
preg_match_all($pattern,$str,$res);
var_dump($res);
echo "<br>";echo "<br>";
echo "-------------通用字符作为原子-----------------------<br>";
//通用字符作为原子
$pattern1 = '/\d/'; //0-9
$pattern2 = '/\D/'; //a-zA-Z
$str = '123132asaaaaa222';
preg_match_all($pattern2,$str,$res);
var_dump($res);
echo "<br>";
preg_match_all($pattern1,$str,$res);
var_dump($res);
echo "<br>";echo "<br>";
echo "-------------自定义原子-----------------------<br>";
//自定义原子
$pattern1 = '/[aj]sp/'; //匹配[aj]中任意一个字符作为原子的asp jsp
$str = 'jjjjspspspasp';
preg_match_all($pattern1,$str,$res);
var_dump($res);
echo "<br>";echo "<br>";
echo "-------------限定符-----------------------<br>";
//限定符
$pattern1 = '/go*gle/'; // *匹配掐面出现原子次数0次 1次或多次
$pattern2 = '/go+gle/'; // +匹配前面出现的原子1次或多次
$pattern3 = '/g+gle/'; // +匹配前面出现的原子1次或多次
$pattern4 = '/go?gle/'; // ?匹配前面出现的原子0次或1次,前面出现一次或没有出现,则返回全部,否则为空
$str = 'goooogle';
$str1 ='gogle';
preg_match_all($pattern1,$str,$res); //goooogle
var_dump($res);
echo "<br>";
preg_match_all($pattern2,$str,$res); //goooogle
var_dump($res);
echo "<br>";
preg_match_all($pattern3,$str,$res); //没有结果
var_dump($res);
echo "<br>";
preg_match_all($pattern4,$str1,$res); //gogle
var_dump($res);
echo "<br>";echo "<br>";
echo "-------------边界限定-----------------------<br>";
//边界限定
$pattern1 = '/^abc/'; // ^匹配输入字符开始的位置,必须是abc形式的开头
$pattern2 = '/abc^/'; // ^匹配输入字符结尾的位置,必须是abc形式的结尾
$pattern3 = '/^abc$/'; // ^$只匹配某字符
$str = 'abc2342dfads';
preg_match_all($pattern1,$str,$res);
var_dump($res);
echo "<br>";
preg_match_all($pattern2,$str,$res);
var_dump($res);
echo "<br>";
preg_match_all($pattern3,$str,$res);
var_dump($res);
echo "<br>";echo "<br>";
echo "-------------反向引用-----------------------<br>";
//反向引用
$pattern = '/\d{4}(-)\d{2}\\1\d{2}/'; // \\1代表第一个()缓冲区,这里等同于(-)
$str = '2019-01-28';
preg_match_all($pattern,$str,$res);
var_dump($res);
?>