注:以下内容均为作者个人见解,若有不正确的地方,还请读者斧正
同时如果对你帮助的话,还请点赞,收藏加关注,你们的支持是我最大的动力!
一、正则表达式
场景描述:比如你现在要写一个程序,其中有一个功能是匹配以一个日志文本中的IP地址。
IP地址:点分式的字符串
192.168.31.1
0.0.0.0
循环
然后一个字符一个字符的比对
ip_str[0] >= '0'&&ip_str[0] <='9'
这样写就会逻辑很复杂。
正则表达式就是用来描述某种规则字符的表达式,主要用于模糊搜索(查询)
要查找IP地址可以按照规则搜索
分析IP地址的规则:
- 一共分为四段
- 每一段至少一个数字至多三个数字
- 两端中间会有一个点
正则表达式里面字符串中字符分为两类:
- 普通字符:只代表自己
- 1 2 a b ...
-
元字符:不代表自己,有特殊含义(这个含义优先)
-
. * ? + \ ...
-
注意:元字符想要表示自己本身原来的意思的话,需要用(\)反斜杠进行转义
1.正则表达式中元字符
- . :表示匹配任意单个字符
- 示例:
表达式:[123456789] 表示在1~9的字符范围内去匹配一个
可以匹配到:1 2 3 4 5 6 7 8 9
表达式:[13579abcd] 表示在13579abcd的字符范围内去匹配一个
可以匹配到:1 3 5 7 9 a b c d
字符组可以用 - 来表示一个范围
[0123456789] 可以写成 [0-9]
[abcdefghij] 可以写成 [a-j]
其实就是按照ASCII码去列举范围
-
\w :表示匹配字母、数字以及( _ 下划线)
- 示例:
表达式:\w 表示在0~9、a-z、A-Z、_这些字符范围内去匹配一个
可以匹配到:0-9 a-z A-Z _
- + :表示匹配一个或多个先前字符或者是模式 (贪婪匹配)
- 示例:
表达式:\w+ 表示匹配一个或多个字母、数字、_
可以匹配到:1 11 1111 ....
:12 12222 12315646
....
表达式:1+ 表示匹配一个或多个1
可以匹配到:1 11 111 1111 ....