正则表达式分类掌握与应用

正则表达式很有用,特别是在处理文档,文本文件和代码时,结合grep,awk,sed,head,tail,less,more等命令,定位错误,提取关健信息很重要。

元字符,所谓的元字符,就是正则表达式的关键字,类似编程语言的关健字和运算符

这些关健字大致可以分为,

1.字符关健字,就是可以用来表示某一类字符的特殊字符,类似shell的通配符

一 . 点号,可以匹配除换行外的任意字符

二 \d 代表一个0到9的数字,也可以表示成0-9,\d更简捷,0-9更精确,方括号的好处是可以表示012等非0-9全集的数字,

三 \D 表示非数字,也可以表示为\^0-9,表示不包含0-9的字符集,

四 \w 匹配字母或数字或下划线或汉字,也能写成a-zA-Z0-9_汉字,注意和.区分,.的范围更广

五 \W (大写) :等同于\^\\w,不包含a-zA-Z0-9_汉字等字符

六 \s (小写) :代表换行符、Tab制表符等空白字符(空格、回车、制表符)。

七 \S (大写) :代表非空白字符,范围很广,包含\w,\d,#,%之类但并限于的更多的字符

一般大写的因为范围不好控制,不常使用,记住小写的范围就可以使用了。

八 \\d\\D\\w\\W\\s\\S可以表示所有字符集,. 点号表示的范围是不包含换行的所有字符集

九 :%\&,方括号的另一个用途是可以指定不在数字字母等范围内的字符,如冒号,百分号之类

核心四个,.dws,加个方括号

2.量词,字符出现的次数

? :匹配前面的子表达式0次或1次。

* :匹配0至多个在它之前的子表达式。

+ :匹配前面的子表达式1次或多次。

{n} :匹配确定的 n 次。

{n,m} :最少匹配 n 次且最多匹配 m 次。

组合,\d+,\w+,分别表未数字串,字符串,如果是星号,也包含空串

3.位置,字符出现的位置

^ (shift+6) :匹配一行的开始。

$ 匹配行结束符。

\b 单词边界

\B 非单词边界

最常用的

^.*111111.*$,包含11111的字符串

4逻辑运算符

| ()(?=)(?:) (?!)这些组合比较复杂,一般掌握|或,()就可以了

应用:

比如,要提取日志14:55,56分,关健函数set/get,值1000的日志,.是任意字符,加*是任意个任意字符,表示三个索引信息之间有其他任意个字符,三个索引必须顺序固定,方括号可以枚举,这意味着包含14:55和14:56,当然也可以写成(14:55|14:56),i不区分大小写,n显示行号

grep -inE "14:556:.*(set|get).*1000" log.txt

也可以简单些,这里使用r参数,会递归查找

grep -rin 14:556 | grep -E "set|get" | grep 1000

如果三个位置顺序不固定

grep -rinP '^(?=.*14:55:)(?=.*(set|get))(?=.*1000).*$'

相关推荐
databook6 天前
面向数据工程师的正则表达式:从日志清洗到字段提取
python·正则表达式·数据分析
小白快快跑哦7 天前
python-字符串全解(六):正则表达式-位置断言
python·正则表达式·位置断言
哭泣方源炼蛊10 天前
正则表达式c++内容汇集
数据库·c++·mysql·正则表达式
划破黑暗的第一缕曙光10 天前
正则表达式使用规则和用例
正则表达式·语法·图表·语法规则·练习用例
小白快快跑哦11 天前
python-字符串全解(六):正则表达式-量词
python·正则表达式·字符串
福兮说11 天前
JS 正则的六个坑:带 g 的 test() 一真一假、空匹配死循环、replace 里的 $
开发语言·前端·javascript·正则表达式
Rebecca_aLi11 天前
码匠教育:零基础学 Python,标识符到循环全套基础语法解析
开发语言·python·正则表达式
IvanCodes11 天前
Python 正则表达式(十四):文本匹配、查找与替换
开发语言·python·正则表达式
FED_AF12 天前
Linux运维“邪修”功法之正则表达式
linux·运维·正则表达式