正则表达式学习笔记

正则表达式知识点:

笔记整理于教程: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

注:\.中的\表示转义符号,因为.本身表示任意字符

END


正则表达式学习笔记
https://maplelea1f.github.io/2024/09/01/正则表达式学习笔记/
作者
Maple
发布于
2024年9月1日
许可协议