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:正则表达式匹配和正则表达式替换是两个不同的操作步骤,不要混淆