在PHP中,正则表达式的前瞻(lookahead)和后顾(lookbehind)是两种强大的预查工具,可以用来在匹配模式时进行条件判断。前瞻用于查找某个位置之后必须存在(或不存在)的字符序列。
以下是一个使用PHP正则前瞻的实例,我们将通过几个表格来展示前瞻的不同用法。
1. 前瞻匹配示例:必须跟在特定字符之后
需求:匹配所有年份,但年份之后必须紧跟“年”字。
```php
$pattern = '/""d+(年)/';
$text = '2023年是一个重要的年份,2022年则不是。';
preg_match_all($pattern, $text, $matches);
```
| 匹配结果 |
|---|
| 2023年 |
2. 前瞻否定匹配示例:不能跟在特定字符之后
需求:匹配所有年份,但年份之后不能紧跟“年”。
```php
$pattern = '/""d+(?![年])/';
$text = '2023年是一个重要的年份,2022则不是。';
preg_match_all($pattern, $text, $matches);
```
| 匹配结果 |
|---|
| 2023 |
| 2022 |
3. 前瞻匹配示例:必须出现在特定位置之后
需求:匹配所有单词,但单词之后必须紧跟“的”。
```php
$pattern = '/""w+(的)/';
$text = '这是我的书,那不是你的。';
preg_match_all($pattern, $text, $matches);
```
| 匹配结果 |
|---|
| 我的 |
| 你的 |
4. 前瞻否定匹配示例:不能出现在特定位置之后
需求:匹配所有单词,但单词之后不能紧跟“的”。
```php
$pattern = '/""w+(?![的])/';
$text = '这是我的书,那不是你的。';
preg_match_all($pattern, $text, $matches);
```
| 匹配结果 |
|---|
| 这 |
| 是 |
| 我 |
| 的书 |
| 那 |
| 不 |
| 是 |
| 你 |
| 的 |