安装注册
模板采集
自定义入门
循环
ajax与新标签
登录验证
XPath
特殊翻页
提取数据
数据导出
云采集
其他功能点
正则表达式
2020-03-30 25470
1、正则表达式简介
正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个【规则字符串】,这个【规则字符串】用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串。
2、正则的用途
字符串匹配(字符匹配)
字符串查找
字符串替换
3、常用元字符及描述
\d 匹配一个数字字符。等价于[0-9]
\D 匹配一个非数字字符。等价于[^0-9]
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S 匹配任何非空白字符。
\w 匹配构成单词的字符(字母、数字、下划线)。等价于[A-Za-z0-9_]
\W 匹配非构成单词的字符。等价于[^A-Za-z0-9_]
\p{Lower} 英文的小写字母
. 任意一个字符
X* 任意次数
X+ 一次或多次
X? 最多一次
X{n} 正好n次
X{n,} 最少n次,上不封顶
X{n,m} 最少n次,最多m次
[] 表示一个范围
[a-z]|[A-Z] [a-zA-Z] [a-z[A-Z]] a到z 或A到Z
[A-Z&&[RFG]] A到Z并且RFG (交集的意思)
“” 正则 “a?” 零宽度匹配,出现零次
边界匹配
^开头和$结尾
^h.* .*ir$ ^h[a-z]{1,3}\b
\b 一个单词的边界,空格、换行……
^[\s&&[^\n]]*\n$ 空白行,开头是空白字符但不是换行符,出现0次或多次,且紧跟着是结束的换行符
3、常用正则表达式
匹配所有数字 [0-9]+
去除所有空格 \s+
匹配任意字符:
匹配包括换行符在内的任意字符 ([\s\S]*) 同时,也可以用 “([\d\D]*)”、“([\w\W]*)” 来表示
([\s\S]*?) 加上问号 表示最短匹配
匹配时间 \d{4}-\d{2}-\d{2}
匹配时间 20\d{2}(([^\d]|/s|//|:)?\d{1,2}){5}
匹配时间 [0-9]{4}年[0-9]{1,2}月[0-9]{2}日[\s\S]*[0-9]{2}:[0-9]{2}
匹配日期 [0-9-:]+
匹配标题 [0-9|.]+[k|K|m|M|g|G|片|枚|/|L||克|l|/]+
[0-9|.]{1,10}[mm]
[0-9|.][0-9|/]{1,10}[k|K|m|M|g|G|p|片|枚|支|个|盒|条|对|/|L||克|l|/|0-9]+
名字只保留姓氏 \B.
电话加密 (?<=[0-9]{3})(.)+(?=[0-9]{4})
以XX为结束 ([\s\S]*?)(?=来源)
空格开始获取and前第一个单词 \b([^ ]+?)\b(?= and )
去除尾部空格:(\s*$)
匹配图片:
(?<=<img)(.+?)(?=>)
(?<=src=")(.+?)(\.jpg|\.png|\.gif|\.bmp|\.jpeg)
(?<=src=")(.+?)(\.jpg|\.png|\.gif|\.bmp|\.jpeg|\.JPG|\.PNG|\.GIF|\.BMP|\.GIF)
[^/]+.jpg
[^/]+(\.jpg|\.png|\.gif|\.bmp|\.jpeg)
(http:|https:|//)(.+?)(\.png|\.jpg|\.gif|\.bmp|\.jpeg)
3、常用实例
1)如果要匹配出 \ | 这两个符号要在表达式里面加下反\
示例用八爪鱼正则工具演示: \\ \|
2) 表达式的开始结束表示
以什么开始不包含:(?<=开始字符)
以什么结束不包含:(?=结束字符)
表示任意字符(.+?)
3) 正则表达式如何调整文本前后位置
示例网址:https://new.qq.com/omn/20200328/20200328A043QP00.html
将页面显示的时间样式调整为2020-03-28 07:38,如果打开网页后无法显示左侧时间,请将流程图栏往左边缩小:
第一步:提取红框的文本,再用正则表达式匹配提取时间部分(.+?):\d{2}
第二步,用正则表达式替换,将时间格式化为 2020-03-28 07:38
(\d{4})(\d{2})/(\d{2})(\d{2}:(\d{2}))
$1-$2-$3 $4
解析:()括号括起来的是表达式,$表示表达式,表达式从左往右排序,1、2、3、4...
在这里:$1表示(\d{4}),$4表示(\d{2}:(\d{2})),中间的/不算$表示的表达式
$的顺序是可以调整的:
比如:$4 $2-$3-$1
结果为:07:38 03-28-2020
Ps:正则表达式匹配和正则表达式替换是两个不同的操作步骤,不要混淆