php后台“爬虫”模拟登录第三方系统(二)---正则表达式的介绍

原创 2015年11月20日 22:12:56

使用cURL抓取到页面的数据是html 字符串 ,需要用正则表达式进行分割,存储到数组等地方。下面简单介绍一下php中的正则表达式。

正则表达式的概述

正则表达式(Regular expression,简写为Regexes)是一种用来操作和检验字符串数据的强大工具。它相当与一串特殊的字符,用它可以转换成算法,对文本进行匹配等操作。
在php中有两套正则表达式处理函数库。
PERE库,以“perg_”为前缀命名的函数,且表达式都应该被包含在定界符中。
POSIX扩展语法的正则表达式函数,使用以“ereg_”为前缀命名的函数。
两套函数库的功能相似,但PCRE库效率略占优势。

正则表达式的用途

1.测试字符串的某个模式。例如,可以对一个输入字符串进行测试,验证输入的字符串是否是邮箱,手机号等
2.替换文本。可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字。
3.根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字。

正则表达式中常用的非打印字符

原子字符 含义描述
\cx 匹配由x指明的控制字符.例如:\cM匹配一个Control-M或回车
\f 匹配一个换页符
\n 匹配一个换行符
\r 匹配一个回车符
\t 匹配一个制表符、
\v 匹配一个垂直制表符
在window中匹配是否有回车换行出现用'/\n/'
在linux中匹配是否有回车换行出现用'/\r\n/'

正则表达式中常用”通用字符类型“

原子字符 含义
\d 匹配任意一个十进制数,等价[0-9]
\D 匹配任意一个除十进制数字以外的字符,等价[^0-9]
\s 匹配一个任意空白字符,空白字符指:制表符,回车符等。等价[\f\n\r\t\v]
\S 匹配一个除空白符外的任意字符,等价[^\f\n\r\t\v]
\w 匹配任意一个数字,字母或下划线,等价于[0-9a-zA-Z_]
\W 匹配任意一个除数字,字母或下划线,等价于[^0-9a-zA-Z_]

正则表达式的元字符

元字符 含义
* 匹配0次,1次或多次其前的原子
+ 匹配1次或多次
匹配0次或1次
. 匹配除换行符外的任意字符
| 匹配两个或多个的分支选择,”或”的功能
{n} 其前面的原子恰好出现n次
{n,m} 其前面的原子出现n次到m次
^或\A 字符串开始出现的开始位置,表示以什么开头
[^] ^在方括号内表示除什么以外
$或\Z 以什么结尾
\b 匹配单词的边界
\B 匹配除单词边界以外的部分
[] 方括号中指定任意一个原子、

模式修正符

在正则表达式定界符之外使用,既是在最后一个斜线”/“之后

模式修正符 功能
i 不区分大小写,例如:”/php/i”匹配时不区分大小写
s 模式中圆点元字符”.”,匹配所有字符,包括换行符
x 模式中的空白忽略不计
U 反转了匹配数量的值使它不是默认的重复,而变成在后面跟上“?”,才是重复。

php正则表达式函数

int preg_match(String pattern,String subject[,array maches])
pattern 正则表达式语法编写的模式
subject 被匹配的字符串
第三个参数数组用于存储第一个参数中各部分匹配的结果
<?php
$pattern = '/(http):\/\/(www\.)?([^\.\/]+)\.(com|net|cn)(\/[\w-\.\/\?\%\&\=]*)?/i';
/**
 *  (www\.)? 表示www.出现0次或者1次
 *  ([^\.\/]+) 表示除点.和/的任意一个或多个字符
 *  (com|net|cn) 表示com,net,cn,其中一个
 *  (\/[\w-\.\/\?\%\&\=]*)? 表示匹配 /index.php或/index.php?id=103等等后缀
 */
$subject = "网址为:http://scau.cn/index.php,欢迎登陆";
if(preg_match($pattern,$subject,$matches)){
    echo $matches[0]."<br>";
    echo $matches[1]."<br>";// (www\.)? 没有相应的匹配则为空
    echo $matches[2]."<br>";
    echo $matches[3]."<br>";
    echo $matches[4]."<br>";
    echo $matches[5]."<br>";
}else{
    echo "搜素失败";
}

这里写图片描述

函数int preg_mache_all(String pattern,String subject[,array maches)
与preg_mache类似,不同之处preg_mache函数在第一次匹配之后则停止搜索
preg_mache_all会搜索整个字符串
函数array preg_grep(string pattern,array input)
模式匹配input数组中的元素,函数返回匹配的数组元素
<?php
$pattern = '/^[a-zA-Z]+(\.|\d)+$/';//以一个或多个字母开头,以点或数字结尾
$array = array("zhangsan","lisi123","tiankong.34","100","dixia","dixia1.22.2");
$version = preg_grep($pattern,$array);
var_dump($version);

这里写图片描述

函数mixed preg_replace(mixed pattern,mixed replacement,mixed subject [,int limit])
执行表达式的搜索和替换,是PHP中一个最强大的字符串替换处理函数
subject用pattern正则表达式搜索,并用replacement的参数来替换,limit省略或-1则所有匹配项都要替换,否则仅替换limit个
函数 array preg_split(string pattern,string subject [,int limit [,int flags]])
第三个参数最多返回limit个字串,最后一个包含剩下的所有字串
第四个参数 标记组合用|连接
PERG_SPLIT_NO_EMPTY :返回非空成分
PERG_SPLIT_DELIM_CAPTURE :定界符模式中的括号表达式也会被捕获并返回

个人博客:http://www.javaknowledge.cn/?p=57

java NIO /IO 非阻塞IO 和IO的区别及代码示例

NIO与IO最大的区别之处是: (1)处理数据的方式不同,IO是以流的方式来处理数据的,每次操作只处理一个字节,因此处理的效率比较低;而NIO是以块的方式来处理数据的,每次操作都是以块为单位处理的,...

Treeset和HashSet有什么不同(复习)

Set  | |-------HashSet |-------TreeSet Set集合是一个无序的集合,与其他集合表现出来的最显著的特点是:里面不存在相同的值,当然前提是这些集合有自然顺序(Tr...

php后台“爬虫”模拟登录第三方系统(一)---cURL的介绍

一.相关知识介绍在服务器后台使用爬虫对第三方进行模拟登录,登录后可进行数据收集。也可以作为第三方登录,用处之多,我便不做细讲。 所具备的的知识: 1.curl知识 2.sesson和cookie...
  • liu_c_y
  • liu_c_y
  • 2015年11月20日 13:00
  • 2717

php后台“爬虫”模拟登录第三方系统(三)---模拟登录学校正方系统

cookie维持客户端和服务器端的交互Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站...
  • liu_c_y
  • liu_c_y
  • 2015年11月21日 01:35
  • 7187

网页爬虫-用PHP的拓展库curl实现模拟登录慕课网

网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕...

python3.5——爬虫实现批量下载图片(正则表达式法和BeautifulSoup第三方库法)

先来例程: 正则表达式法:(不推荐) # -*- coding: utf-8 -*- """ Created on Thu Jun 1 16:22:10 2017 @author: qiu...
  • sqiu_11
  • sqiu_11
  • 2017年06月04日 23:15
  • 1235

第2个爬虫教程的大坑,关于正则表达式的括号与竖线

Python实战:Python爬虫学习教程,获取电影排行榜 http://www.toutiao.com/i6321943520135348737/?group_id=6321939698362384...

python网络爬虫学习(四)正则表达式的使用之re的其他方法

在上一篇文章中,我们学习了re的match方法,那么掌握了match方法,其他的方法学起来就相对轻松许多,下面对这些方法进行介绍re.searchsearch方法与match方法最大的不同在于,mat...

Python 爬虫小程序(正则表达式的应用)

目标:通过正则表达式写一个爬虫程序,抓下网页的所有图片。 思路 1.  获取网页源代码 2.  获取图片 3.  下载图片 第一步,打开URL 获取源代码 [root@node1 ...

利用python脚本抓取AC的代码[爬虫+HTMLParser+handle_entityref+正则表达式+模拟登陆+文件操作]

#-*- coding=utf-8 -*- import time,urllib2,urllib,re,HTMLParser,os from htmlentitydefs import entityd...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:php后台“爬虫”模拟登录第三方系统(二)---正则表达式的介绍
举报原因:
原因补充:

(最多只允许输入30个字)