6.1. 使用子表达式进行分组
子表达式使用元字符
(
和)
来定义
假设有以下字符串
abc;abc;abc;
如果按照之前的写法我们会写表达式为 [abc]{3}
但是这样是不行的,这样写 {3}
只能匹配3次单个字符
匹配结果如下:
aaa bbb ccc
可以看出匹配出来的内容不是我们想要的,所以我们需要用到子表达式来处理这个问题!!!
将 [abc]{3}
修改成 (abc;){3}
,就可以完整字符串中的内容了
匹配结果如下:
abc;abc;abc;
理解:子表达式相当于匹配 ( )
中的内容,而不是像之前的 [ ]
只能匹配单个字符了
1、匹配多个  ;
<?php
//字符串
$str = '<p> </p>';
//正则表达式
$regular = '/( ){2,}/';
//执行匹配正则表达式
preg_match_all($regular, $str, $matches);
//打印结果
echo '<pre>';
print_r($matches);
echo '</pre>';
输出结果
Array
(
[0] => Array
(
)
[1] => Array
(
)
)
2、匹配 IP地址
<?php
//字符串
$str = '192.168.0.1';
//正则表达式
$regular = '/(\d{1,3}\.){3}\d{1,3}/';
//执行匹配正则表达式
preg_match_all($regular, $str, $matches);
//打印结果
echo '<pre>';
print_r($matches);
echo '</pre>';
输出结果
Array
(
[0] => Array
(
[0] => 192.168.0.1
)
[1] => Array
(
[0] => 0.
)
)
3、匹配年份
<?php
//字符串
$str = '2022-08-02 1911-08-02';
//正则表达式
$regular = '/(20|19)\d{2}/';
//执行匹配正则表达式
preg_match_all($regular, $str, $matches);
//打印结果
echo '<pre>';
print_r($matches);
echo '</pre>';
输出结果
Array
(
[0] => Array
(
[0] => 2022
[1] => 1911
)
[1] => Array
(
[0] => 20
[1] => 19
)
)
推荐文章: