1. 正则表达式基础语法速查表
符号 | 含义 | 示例(匹配豆瓣标题) |
---|---|---|
. | 匹配任意字符 | <title>(.*?)</title> |
\d | 匹配数字 | 第(\d+)集 |
[] | 匹配括号内任意字符 | [0-9a-zA-Z] |
() | 捕获分组 | <a href="(.*?)">(.*?)</a> |
新手可使用 模板汇code.jishujc.com 的「正则表达式测试工具」,实时查看匹配结果,降低编写难度。
2. 简单规则编写:提取列表页信息
以 80s 电影网为例,列表页解析规则:
regex
<div class="co_content8">.*?<a href="(.*?)" class="ulink">(.*?)</a>.*?<img src="(.*?)"
- 第一个分组:详情页链接(
/movie/123.html
) - 第二个分组:标题(含年份,如 “流浪地球 2 (2023)”)
- 第三个分组:封面图链接(
http://img.80s.com/cover.jpg
)
通过preg_match_all
函数批量提取数据:
php
preg_match_all($pattern, $html, $matches, PREG_SET_ORDER);
foreach ($matches as $match) {
$detail_url = 'http://www.80s.com' . $match[1];
$title = trim($match[2]);
}
3. 复杂规则编写:处理动态加载内容
针对 Ajax 加载的分页数据(如爱奇艺剧集列表),需解析 JSON 数据:
json
{
"data": {
"list": [
{
"id": "123",
"title": "庆余年第二季",
"cover": "http://qiyipic.com/cover.jpg"
}
]
}
}
正则表达式:
regex
{"id":"(\d+)","title":"(.*?)","cover":"(.*?)"}
配合json_decode
函数转换为数组:
php
$json_data = json_decode($ajax_response, true);
foreach ($json_data['data']['list'] as $item) {
$id = $item['id'];
$title = htmlspecialchars($item['title']);
}

4. 正则优化技巧
- 非贪婪匹配:在量词后加
?
(如.*?
),避免匹配过多内容 - 字符转义:对特殊字符(如
<
,>
,&
)添加反斜杠 - 分组命名:使用
(?<name>...)
提高可读性regex<a href="(?<detail_url>.*?)">(?<title>.*?)</a>
掌握这些技巧后,可尝试编写「跨页采集」「多级目录解析」等复杂规则。 模板汇code.jishujc.com 提供《苹果 CMS 正则表达式案例集》,包含 50 + 实战规则和详细注释。
本站所发布的全部内容源于互联网收集整理,仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,版权争议与本站无关。用户必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!
重点提示:
互联网转载资源会有一些其他联系方式,请大家不要盲目相信,被骗本站概不负责! 本网站部分内容只做项目揭秘,无法一对一教学指导,每篇文章内都含项目全套的教程讲解,请仔细阅读。 本站分享的所有平台仅供展示,本站不对平台真实性负责,站长建议大家自己根据项目关键词自己选择平台。 因为文章发布时间和您阅读文章时间存在时间差,所以有些项目红利期可能已经过了,需要自己判断。 本网站仅做资源分享,不做任何收益保障,希望大家可以认真学习。本站所有资料均来自互联网公开分享,并不代表本站立场,如不慎侵犯到您的版权利益,请联系本站删除,将及时处理!
如果遇到付费才可观看的文章,建议升级VIP会员。全站所有资源“VIP会员无限制下载”。