正则表达式学习笔记
正则表达式知识点:
笔记整理于教程:10分钟快速掌握正则表达式_哔哩哔哩_bilibili
限定符(Qualifiers)
?–前面的字符出现1次或者0次
eg:used?–>use/used
*–匹配0个或多个字符
eg:ab*c–>ac/abc/abbbbbc
+–匹配出现1次及以上的字符
eg:ab+c–>abc/abbbbbc
{}–精确匹配出现次数或出现次数的范围
eg:ab{6}c–>abbbbbbc,即b出现6次
eg:ab{2,6}–>abbbc,即b出现2~6次
eg:ab{2,}–>abbc,即b出现2次及以上
()–匹配多字符重复
eg:(ab)+–>ababab
“或”运算(OR Operator)
|–或
eg:a (cat|dog)–>a cat/a dog
eg:a cat|dog–>a cat/dog
字符类(Character Classes)
[]–匹配的字符只能取自于[]中的内容
eg:[abc]+–>abc/aabbcc
eg:[a-zA-Z0-9]+–>所有的英文字符和数字
eg:[^0-9]+–>所有的非数字字符(包括换行符)
[^]–匹配的字符全部不取自于[^]中的内容
eg:[^a-z]+–>所有不是a-z的内容
元字符(Meta-characters)
\d–数字字符(digit)
\w–单词字符:英文、数字及下划线(word)
\s–空白符:Tab和换行符(space)
\D–非数字字符
\W–非单词字符
\S–非空白字符
.–任意字符(除换行符)
^–匹配行首
eg:^a–>匹配行首的a,即a213y19239812aduag1
$–匹配行尾
eg:a$–>匹配行尾的a,即a8231hsaasda
贪婪与懒惰匹配(Greedy vs Lazy Match)
*+{}在匹配字符串时默认会匹配尽可能多的字符
贪婪eg:<.+> –> This is a simple text
懒惰eg:<.+?> –> This is a simple text
正则表达式实例问题:
实例1——RGB颜色值匹配(匹配文本中出现的所有十六进制RGB颜色值)
补充:十六进制RGB颜色系统中#FFFFFF表示白色(最大红色R、最大绿色G、最大蓝色B)
#00
#fffff
#ffaaff
#00hh00
#aabbcc
#000000
#ffffffff
answer:#[a-fA-F0-9]{6}\b
注:\b表示单词字符的边界
实例2——IPv4地址匹配
补充:IPv4(Internet Protocol version 4)是一个32位的数字,有四个由点分隔的十进制数,每个数的范围是0到255,形如:192.168.1.1
123
255.255.255.0
192.168.0.1
0.0.0.0
256.1.1.1
This is a string.
123.123.0
answer1: \d+\.\d+\.\d+\.\d+ –>基础答案:只能匹配数字字符和.
answer2: \b(25[0-5]|2[0-4]\d|[01]?\d\d?\.){3}25[0-5]|2[0-4]\d|[01]?\d\d?\b
注:\.中的\表示转义符号,因为.本身表示任意字符