欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

正则表达式学习使用笔记整理

程序员文章站 2022-07-13 13:14:36
...

正则表达式一般来说分为正向正则表达式和逆向正则表达式

正则表达式可以实现字符串匹配的功能,它采用一定的策略进行匹配,在有贪婪模式的情况下,正则会优先匹配能匹配的最大值,然后再以步退的模式向前迭代,直到整句正则表达式完全匹配为止,可以看出,在有贪婪模式的正则中,时间复杂度是比较高的,所以在匹配环境中最好避免大量使用贪婪模式。

正则表达式复杂度测试工具:RegexBuddy4RegexBuddy 4
在线练习正则表达式: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、一些特殊字符需要进行转义

. => \.
+ => \+
- 不需要转义 -
$ => \$
^ => \^
相关标签: 正则

上一篇: python 正则

下一篇: 正则表达式