请输入
菜单

正则表达式

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次或多次,且紧跟着是结束的换行符

 

4、常用正则表达式

匹配所有数字 [0-9]+

去除所有空格  \s+

去除换行符 \n

匹配任意字符:

匹配包括换行符在内的任意字符 ([\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)

 

5、常用实例

1)如果要匹配出 \  | 这两个符号要在表达式里面加下反\

示例用八爪鱼正则工具演示: \\  \|

 

2) 表达式的开始结束表示

以什么开始不包含:(?<=开始字符)

以什么结束不包含:(?=结束字符)

表示任意字符(.+?)

 

3) 正则表达式如何调整文本前后位置

示例网址:https://www.mee.gov.cn/ywdt/szyw/

如下图所示,将页面显示的时间样式调整为2023-11-17

 

第一步:做列表循环,提取列表的数据。其中提取数据步骤,设置提取红框内的时间。

 

第二步,数据预览界面,在对应的字段那里点击三个点(更多字段操作),选择格式化数据,选择用正则表达式替换,将文本里面的换行符去掉,把时间格式化为 172023-11

去掉换行符的正则表达式 \n

 

第三步,再次选择正则表达式替换,调整时间文本内容的顺序。

表达式如下:

(\d{2})(\d{4})-(\d{2})

$2-$3-$1

解析:()括号括起来的是表达式,$表示表达式,表达式从左往右排序,1、2、3...

在这里:

$2表示(\d{4}),也就是文本2023;

$1表示第一个(\d{2}),也就是文本17;

$3表示第二个(\d{2}),也就是文本11;

中间的-不算$表示的表达式

$的顺序是可以调整的:

比如:$3-$1-$2

结果为:11-17-2023

Ps:正则表达式匹配和正则表达式替换是两个不同的操作步骤,不要混淆。

 

作者:Tina

最近修改: 2024-01-31