社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
作者博客:清自以敬
欢迎任何形式转载,但请务必注明出处。
笔者会随时更正文章内容,但由于笔者水平有限,如果文章或代码有错误或者表述不当之处,还望不吝赐教。
文章中的错误笔记链接
- 如链接笔记出现
页面丢失
,则笔记一般为私密状态,完善ing,完善后会公开,还望见谅。- 如链接笔记是一个
错误链接或者空链接
,可以评论区回复一下,笔者会修正链接。
转义的作用:
当某个字符在表达式中具有特殊含义,例如字符串引号中出现了引号,为了可以使用这些字符本身,而不是使用其在表达式中的特殊含义,则需要通过转义符“”来构建该字符转义字符以正常使用。
规定的转义字符表:
- 红框之上的字符还有“ ”都是非打印控制字符
- 对于转义符""的出现,都是具有特殊含义的,表示转义符,所以转义字符表对此规定了转义字符。
最后的俩个形式则是为了表示ascii范围内其他字符,以便特殊表达式的使用,例如对正则字符组中的^(脱字符),可以以x5e表示
正则作用:规定了字符串的组成规则,通过其匹配模式对目标字符串进行匹配字符或位置。
正则表达式对字符的匹配,形象点就是横向匹配和纵向匹配这两个方式。
纵向就像密码锁一个播轮(例如字符组),横向就像选择播轮个数(例如量词)
字面量:正常的字符,用来精准匹配一个具体字符
字符组:
匹配一个符合方括号内逻辑的内的字符。
逻辑符号:^(非)、- (区间或)、直接拼接(或)。
案例:
1,[ac]
:匹配元素==(a||c)
2,[^ac]
:匹配元素!=(a&&c)
3, [a-c]
:匹配元素==(a||b||c)
4,[0-2]
:匹配元素==(0||1||2)
5,[02]
:匹配元素==(0||2)
允许在方括号内进行拼接以扩大范围,例如[a-zA-Z0-9_],即匹配字母或者数字或者下划线
如果要匹配逻辑符号,则需要使用其转义字符,或者破坏组合顺序,比如
[az^]
一些常见的简写形式:
d
:[0-9]
d :digit(数字)
大写的D则表示非数字[^0-9]
w
:[a-zA-Z0-9_]
w:word(单词)
大写的W则表示非单词[^a-zA-Z0-9_]
s
:[ tvrnf]
。
大写S表示非空白
s:space(空白)。表示空格、水平制表、垂直制表、回车(return,回到行首)、换行(newline,新行)、换页(form feed,表单).
:[^nru2028u2029]
。匹配除了换行符(rn)
合行结束符(u2028u2029)
组合上述即可得到通配符,如
[dD]
。[^]
也表示通配符,不对任何字符做非操作自然就是任意字符。
量词
匹配字符X的出现次数。量词符号:?、+、*、{}
检查模式:
1,贪婪型:尽可能多的检查
X?
:0||1
?可认为是询问问有还是没有
X+
:>=1
X*
:>=0
X{n}
:==n
X{n,}
:>=n
X{n,m}
:[n,m]
2,懒惰型:尽可能少的检查
分支:
(p1|p2|…|pn),“|”表示分支,短路或
进行匹配一个p,匹配到了一个就结束匹配。
"()"就是括号的作用。即标识整体
分析值的构成情况,选择纵向播轮范围(字符组),选择播轮个数(量词),有必要再补上分支结构。
案例:
1,筛选可构成十六进制色码的部分:
2,筛选可构成时分制时间的部分(24小时):
如果对于例如01这样的,允许只出现1,可以将0位选择量词"?"
即:(0?[0-9]|1[0-9]|2[0-3]):(0?d|[1-5]d)
3,筛选可构成年月日日期的部分(-连接):
4,筛选可组成windows下绝对路径的部分:
\
([^\/:*?"<>|s u2088u2029]+\)*
([^/:*?"<>|s u2088u2029]+)?
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!