正则表达式学习使用笔记整理
程序员文章站
2022-07-13 13:14:36
...
正则表达式一般来说分为正向正则表达式和逆向正则表达式
正则表达式可以实现字符串匹配的功能,它采用一定的策略进行匹配,在有贪婪模式的情况下,正则会优先匹配能匹配的最大值,然后再以步退的模式向前迭代,直到整句正则表达式完全匹配为止,可以看出,在有贪婪模式的正则中,时间复杂度是比较高的,所以在匹配环境中最好避免大量使用贪婪模式。
正则表达式复杂度测试工具:
在线练习正则表达式:https://regex101.com/
1、匹配ip地址
ip地址最大的特点就是具有重复性,所以只需要确定某一个的正则就行,ipv4最大值为255,所以我们每一项都需匹配小于255的情况,于是正则转换为 用正则实现小于等于255:
一位数和二位数 \d{1,2}
三位数:((1\d{2})|(2[0-4]\d)|(25[0-5]))
合起来就是 (^|\s)(((\d{1,2})|((1\d{2})|(2[0-4][0-9])|(25[0-5])))\.){3}((\d{1,2})|((1\d{2})|(2[0-4][0-9])|(25[0-5])))(\s|$)
2、任意值一般写法
[a-zA-Z0-9_-]+
3、匹配首尾的写法
(^|\s)(\s|$)
4、数字大小匹配
小于15:
不包含负数
(^|\s)(\d|(1[0-5]))(\s|$)
包含负数的版本
(^|\s)(\d|(1[0-5])|(-\d+))(\s|$)
大于90
(^|\s)(9[1-9]|\d{3,})(\s|$)
数字匹配枚举所有可能的情况就行了
5、| 语句的每一种并列的情况都需要单独用括号括起来
错误实例
匹配配置 ospf shutdown , http shutdown , ssh shutdown 都可以
正则为:(^|\s)ospf|http|ssh\s+shutdown(\s|$)
匹配的结果为: ospf ,http,ssh shutdown
这样的匹配结果跟 | 符号的优先级有关,| 符号的优先级比较低,+号比较高,所以ssh\s+shutdown会被认为是一起的,应该将上面的正则修改为
匹配配置 ospf shutdown , http shutdown , ssh shutdown 都可以
正则为:(^|\s)(ospf|http|ssh)\s+shutdown(\s|$)
匹配的结果为:ospf shutdown , http shutdown , ssh shutdown
6、一些特殊字符需要进行转义
. => \.
+ => \+
- 不需要转义 -
$ => \$
^ => \^
推荐阅读
-
ASP.NET学习笔记(五)-全球化部署,网站发布方法,AJAX使用,水晶报表使用,DropDownList,CheckBox全选
-
Linux学习笔记(二):文件目录管理和VIM编辑器的使用
-
JavaScript学习笔记整理_简单实现枚举类型,扑克牌应用
-
JavaScript学习笔记整理_关于表达式和语句
-
JavaScript学习笔记整理_setTimeout的应用
-
Kali学习笔记5:TCPDUMP详细使用方法
-
ES6学习笔记之正则表达式和字符串正则方法分析
-
C#流类FileStream学习使用笔记
-
Java学习笔记 DbUtils数据库查询和log4j日志输出 使用
-
Golang学习笔记之延迟函数(defer)的使用小结