1、正则表达式
(1)原子(匹配linux)
0)任意一个字符
. 点匹配任意一个字符
<?php
$str="php is very much";
$ptn='/./';
//连续匹配
preg_match_all($ptn,$str,$arr);
echo "<pre>";
print_r($arr);
echo "</pre>";
?>
1)单个字母,数字
[a-z],[0-9],[123],[ABC]......
[]作用:匹配中括号里的任意一个元素
<?php
$str="php is very much";
$ptn='/[a-z]/';
//连续匹配
preg_match_all($ptn,$str,$arr);
echo "<pre>";
print_r($arr);
echo "</pre>";
?>
2)特殊字符
\d 任意一个数字
\D任意一个非数字
\s 空格
\S 非空格
\w任意一个字母、数字或下划线
\W任意一个非字母、数字或下划线
<?php
$str="php is very much1234";
$ptn='/\d/';
//连续匹配
preg_match_all($ptn,$str,$arr);
echo "<pre>";
print_r($arr);
echo "</pre>";
?>
3)向后引用
$1,$2......
<?php
$str="2021-04-18";
$ptn='/(\d+)-(\d+)-(\d+)/';
$rep='$2/$3/$1';
$str2=preg_replace($ptn,$rep,$str);
echo "$str2";
?>
4)转义符
\*,\.,\\
将特殊字符转化为普通字符
(2)元字符(匹配多个linux)
* 星号任意多个前面的字符(0、1……)
<?php
$str="php is hhh";
$ptn='/.*/';
preg_match($ptn,$str,$arr);
echo "<pre>";
print_r($arr);
echo "</pre>";
?>
<?php
$str="phppp is hhh";
$ptn='/p*/';
preg_match_all($ptn,$str,$arr);
echo "<pre>";
print_r($arr);
echo "</pre>";
?>
+ 加号匹配一个或多个前面的原子
?问号匹配0个或者1个前面的字符
| 竖线表示或者
<?php
$str="abcdefab";
$ptn='/a|b|c/';
preg_match_all($ptn,$str,$arr);
echo "<pre>";
print_r($arr);
echo "</pre>";
?>
^第一个匹配的
<?php
$str="q1,q2,q3,q4";
$ptn='/^q./';
preg_match_all($ptn,$str,$arr);
echo "<pre>";
print_r($arr);
echo "</pre>";
?>
$最后一个匹配的
\b单词边界
<?php
$str="q1 q2q3 q4";
$ptn='/\bq.\b/';
preg_match_all($ptn,$str,$arr);
echo "<pre>";
print_r($arr);
echo "</pre>";
?>
\B非单词边界
<?php
$str="q1 q2q32 q4";
$ptn='/\Bq.\B/';
preg_match_all($ptn,$str,$arr);
echo "<pre>";
print_r($arr);
echo "</pre>";
?>
[^]取非
<?php
$str="1 2 3 4 a b s";
$ptn='/[^1-4]/';
preg_match_all($ptn,$str,$arr);
echo "<pre>";
print_r($arr);
echo "</pre>";
?>
{}多少个前面的原子
<?php
$str="12345678123456781234";
$ptn='/\d{8}/';
preg_match_all($ptn,$str,$arr);
echo "<pre>";
print_r($arr);
echo "</pre>";
?>