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

正则表达式很有用,特别是在处理文档,文本文件和代码时,结合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).*$'

相关推荐
Patrick在香港6 小时前
一个斜杠,把毫秒变成十几秒
android·数据库·python·性能优化·正则表达式·回溯·redos
echome88810 小时前
Python 正则表达式:5 个日常够用的模式
python·正则表达式
yivifu2 天前
能够使用Python正则表达式函数的文本处理工具——Calibre电子书编辑器
正则表达式
全栈陈序员2 天前
【Python】基础语法入门(二十九)—— 正则表达式实战:文本处理利器
开发语言·人工智能·python·正则表达式
BruceXu8 天前
\b 在中文里会静默失效:三个正则坑和一份能用的字符边界方案
正则表达式
阿昭L9 天前
正则表达式
正则表达式·编译原理
波力海苔夹心脆67510 天前
C# 正则表达式零基础入门:从“看得懂“到“会用“
经验分享·后端·mysql·正则表达式·c#
FRing0311 天前
JavaScript入门到精通二十四(正则表达式、元字符、修饰符)
开发语言·前端·javascript·正则表达式
小白快快跑哦13 天前
python-字符串全解(六):正则表达式-元字符与转义
python·正则表达式·字符串·元字符·转义
小白快快跑哦15 天前
python-字符串全解(六):正则表达式-逻辑运算或
python·正则表达式·字符串·逻辑运算