因为有很多的数据需要使用正则表达式去匹配,一般都是在网上直接搜索一个,但是也是有很多正则表达式是搜索不到的,所以不得不要自己学习一下正则表达式了.这个笔记的学习素材都是来自于胶囊网络,我是害怕自己忘记,所以就写了这个笔记.
表达式: regex=“[Pp]thon”
中括号中的内容可以选择匹配,后面的字符是一定会匹配的。
例如:
Python3
python3
ython
abcdefg&&&
012345678***
987654321%%%
ABCDEFG***
[]
()
如果想匹配除了你要匹配的内容之外的其他内容,可以使用一个^进行取反
例如匹配爱后面不包含你的数据,regex=爱[^你]
爱吗
爱哦
爱我自己
爱了
我爱我
我爱你
爱你
爱你爱你
不爱你
爱你一万年
master
code
jiaonang
123456789
987654321
0123
CODE
JIAONANG
hello world
python
例如匹配下面有空白的code单词,regex=“code[\s]”
code
code jiaonang
code jiaonang
code www
code jiaonang
例如匹配下列被分割的单词code,regex=“\bcode\b”
code
code jiaonang
code.jiaonang
www.code
code-jiaonang
CODEINFO
codeasd/
codejiaonangA$
JIAONANG-MASTER
CODEJIAONANG!
例如匹配所有的小数,regex=“^\d{1,}.\d{1,}$”
192.168
12.12.12.
所有快捷方式的取反就是将小写变大写就可以了,例如:\W \D \S
匹配开头用^,匹配结尾用$
例如:匹配以python开头句子,regex=“^python”
python 12344 Python
居家闪客快打python
例如匹配以python结尾的单词,regex=“python$”
python 12344 python
还是说python
匹配任意字符可以用点【.】,但是不能匹配换行符号【\n】,【.*】就是匹配任意字符。
例如匹配任意字符之后但是ar的字符串,regex=“.ar”
ear
car
parked
garage
barked
rar
haarr
in the
ar
aer
acer
ha ha
anr
and
可选字符就是可以匹配也可以不匹配的字符,在这个字符后面加 一个问号,表示可选可不选
例如:有的单词有两种表达方式,需要同时匹配这两种,例如同时匹配employ和employee,regex=“employe?e?”
employe
employee
employf
在你要匹配的字符后面加一个花括号,花括号里面填写你要重复的次数,
例如匹配下列的电话号码,regex=\d{3}-\d{5}
010-88480
020-72813
030-12345
020-66666
030-98788
030-88888
123-123
01-72813
0-12345
20-66666
0-98788
0–808888
在要匹配的字符后面加一个区间{数字1,数字2},一般都会按照最大的那个区间匹配,如果加一个?,表示非贪婪模式,就会按照最小的那个区间去匹配.
例如匹配下面的数字,regex=“\d{8,9}”
4566545223
45664585
4552233
例如:使用正则表达式提取电话号码,假设电话号码有两种规则:
*逗号:表示0到无穷大
4566545223
45664585
4552233
例如匹配下列以f开头的数据,regex=“f.+”
f0asd…a123—
food
father
faker
fooder
fufufu
f
brather
brathef
arathef
codejiaonang
mastercode
在你要匹配的数据前后加一个括号就是你要提取的数据
张三: 0731-7839932
45664585
4552233
hi
2019-5013-08
2019 5013 08
2019501308
用或符号【|】做分割就可以了
例如提取下面.mp4、.avi、.wmv、.rmvb等视频格式
regex=“(.mp4|.avi|.wmv|.rmvb)”
1.avi
abc.mp4
chapter1.wmv
chapter2.rmvb
有时候,我们并不需要捕获某个分组的内容,但是又想使用分组的特性。
这个时候就可以使用非捕获组(?:表达式),从而不捕获数据,还能使用分组的功能。
例如只要捕获下列的电话号码,但是不要捕获区号regex=“(?:\d{2}|\d{4}|tel)[-:](\d{5})”
01-75855
0731-75855
12345-75855
tel:75855
因为在识别HTML标签的使用,使用下面的表达式,会识别前后不一致的HTML标签.
例如:regex=“<\w+>(.*?)\w+>”
# 全部会被识别
123<font>提示</font>abj
123<font>提示</bar>abj
如果使用回溯,就只会识别前后一致的标签
例如:regex=“<(\w+)>(.*?)\1>”
其中\1代表第一个分组的内容,\2就代表第二个斜杠中的分组
# 就只会识别这衣蛾
123<font>提示</font>abj
很多人也称先行断言和后行断言为环视,也有人叫预搜索,其实叫什么无所谓,重要的是知道如何使用它们!
先行断言和后行断言总共有四种:
正向先行断言
反向先行断言
正向后行断言
反向后行断言
喜欢你 喜欢他 喜欢我 喜欢 喜欢你
喜欢你 喜欢他 喜欢我 喜欢 喜欢你
先行断言和后行断言只有一个区别,即先行断言从左往右看,后行断言从右往左看。
例如:如果要取出喜欢两个字,要求喜欢的前面有我,后面有你,这个时候就要这么写:(?<=我)喜欢(?=你)。
例如:如果要取出喜欢两个字,要求喜欢的前面没有我,后面没有你,这个时候就要这么写:(?
手机号码的规则: