多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

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

正则表达式分类掌握与应用 正则表达式很有用特别是在处理文档文本文件和代码时结合grepawksedheadtaillessmore等命令定位错误提取关健信息很重要。元字符所谓的元字符就是正则表达式的关键字类似编程语言的关健字和运算符这些关健字大致可以分为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.位置字符出现的位置^shift6 匹配一行的开始。$匹配行结束符。\b 单词边界\B 非单词边界最常用的^.*111111.*$,包含11111的字符串4逻辑运算符| ?(?:) 这些组合比较复杂一般掌握|或()就可以了应用比如要提取日志14:5556分关健函数set/get值1000的日志,.是任意字符加*是任意个任意字符表示三个索引信息之间有其他任意个字符三个索引必须顺序固定方括号可以枚举这意味着包含14:55和14:56当然也可以写成(14:55|14:56),i不区分大小写n显示行号grep -inE “14:5[56]:.*(set|get).*1000” log.txt也可以简单些这里使用r参数会递归查找grep -rin 14:5[56] | grep -E “set|get” | grep 1000如果三个位置顺序不固定grep -rinP ^(?.*14:55:)(?.*(set|get))(?.*1000).*$
返回列表