符号说明一览
^符号在开头使用时,匹配开头内容。
若在[^0-9]中开头则表示除了0-9的数字
符号 | 说明 |
---|---|
. | 除了换行符以外所有字符 |
\d | 匹配任意一个数字字符,等于[0-9] |
\D | 匹配除数字字符以外的任意字符,等价于[^0-9] |
\w | 匹配任意一个字母,数字或下划线字符,等价于[A-Za-z0-9_] |
\W | 匹配非字母、数字、下划线。等价于 ‘[^A-Za-z0-9_]’。 |
\s | 匹配任意一个空白字符,包括空格,制表符,换行符等 |
\S | 匹配除空白字符之外的任意字符 |
\b | 匹配单词边界,即单词字符和非单词字符的交界处 |
\B | 匹配非单词边界 |
* | 匹配前面的字符0次和多次 |
+ | 匹配前面的字符一次或多次 |
? | 匹配前面的字符0次和1次 |
| | 将两个匹配逻辑进行活动运算 |
{n} | 匹配前面的字符n次 |
{n,} | 匹配前面的字符至少n次 |
{n,m} | 匹配前面的字符至少n次,但不超过m次 |
[abc] | 匹配字符集中的任意一个字符 |
[^abc] | 匹配除字符集中的字符之外的任意字符 |
^ | 匹配字符串的开头 |
$ | 匹配字符串的结尾 |
() | 分组,将括号内的 |
/ | 常用分隔符,用于标记正则表达式的开头和结尾 |
\ | 转义字符,使用\将有特殊作用的字符(元字符,分隔符等)转义为普通字符 |
实例
实例一 匹配含有某个关键词的字符串
样例为: Info 05/Jan/2023 Warning
Info 06/Jan/2023 Error
正则识别为.*05\/Jan\/2023.*
正则解释: 任意字符数量 + 05\/Jan\/2023. + 任意字符数量
实例二 匹配手机号码
样例:11144445555、22266667777、33388889999
正则表达式:(111|222)\d{8}
正则解释:开头是111或222 + 匹配8个数字字符
实例三 匹配一个完整字符串
样例:[2021-09-23 10:23:45] [INFO] [user login] [user login success]
正则表达式:^\[\d{4}\-\d{2}\-\d{2} \d{2}:\d{2}:\d{2}\] \[(DEBUG|INFO|WARN|ERROR)\] \[.+\] \[.+\]$
正则解释:
1. 开头是[ 四个数字字符 + ’-’两个数字字符 + ‘-’ + 两个数字字符(空格)
\d 匹配任意一个数字字符
2.[开头 里面的数据需要是DEBUG或者INFO或者WARN或者ERROR]
3.匹配两个[] 其中内容为任意内容 $为结尾
正则解析\[、\]表示匹配[]字符,因为[]在正则语法中有特殊含义,因此需要添加转义字符\。
\[\d{4}\-\d{2}\-\d{2} \d{2}:\d{2}:\d{2}\]表示匹配日期和时间
\[(DEBUG|INFO|WARN|ERROR)\]表示匹配各个日志级别。
\[.+\] \[.+\]$表示匹配任意的非空字符串。
实例四 匹配不以某关键词开头的字符串
样例:DEBUG: test debug、INFO: test info
正则表达式:^(?!DEBUG).*
正则解释:^表示开始位置 ?!表示不等于后面标注内容 格式是(?!内容) + 任意数量字符
正则解析:^表示字符串的开始位置,即DEBUG是处于字符串的开头位置。
(?!DEBUG)表示排除包含DEBUG的日志。(?!DEBUG)为正向否定预查,格式为(?!<pattern>),其中<pattern>为需要排除的内容。
.*表示匹配任意字符,直到该行日志结束。
示例五:匹配不包含关键词的字符串
(、为换行)
样例:hello world、INFO、ERROR message、DEBUG、warning log、error INFO、debug detail、info status
正则表达式:^(?!.*(INFO|DEBUG)).*
正则解释:^表示开始位置 识别不等于 任意数量字符+info或者debug+任意数量字符
正则解析:^表示字符串的开始位置,即INFO或DEBUG是处于字符串的开头位置。
(?!.*(INFO|DEBUG))表示排除包含INFO或DEBUG的日志。
.*用于匹配任意字符,直到该行日志结束。