What
查找目标字符的一种规则,主要通过匹配和重复的组合方式来查找
- 全新的界面设计
- 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
- 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
How
1.通配符匹配单个字符的情况
通配符 * 表示0到多个任意字符,如 ls –l s*
通配符 ? 任意单个占位字符
通配符 [] 如 [a-z] [0-9] 单字符占位
2.正则表达式中
匹配操作符
\ 转义字符
. 匹配任意单个字符
[1249a],[^12],[a-k] 字符序列单字符占位
^ 行首
$ 行尾
\<,\>:\<abc 单词首尾边界
| 连接操作符 左右两边是或的逻辑
(,) 选择操作符
\n 反向引用
重复操作符
? 匹配0到1次。
* 匹配0到多次。
+ 匹配1到多次。
{n} 匹配n次。
{n,} 匹配n到多次。
{n,m} 匹配n到m次。
与扩展正则表达式的区别:grep basic
\?, \+, \{, \|, \(, and \)
匹配任意字符
.* 0到多个任意字符
3.Demo
找到 包含数字的行 grep “[0-9]” grep.txt
找到 包含34数字的行 grep “[34]” grep.txt
找到 包含连续4个数字的行 grep “[0-9]{4}” grep.txt
找到 只包含连续4个数字的行,前后不能再有数字了
测试数据:从尚学堂中get到的,有些复杂,在此记录分享一下,如果问题,请指出
ooxx12121212ooxx
ooxx 12121212
oox 12121212
1212 ooxx 1212
oo3xx
oo1234xx
命令 :
grep -E "^[0-9]{4}[^0-9]|[^0-9][0-9]{4}[^0-9]|[^0-9][0-9]{4}$|^[0-9]{4}$" grep.txt
注释:
[]中的表示行首,$表示行尾
[^0-9] 中的 ^ 表示是取反,非0-9的字符
| 逻辑或连接
{4} 表示重复4次
命令描述
以数字做行首的连续4个数字,后面再接非数字的字符
| 以非数字做行首的字符,后面再接4个连续字符,后面再接非数字的字符
| 以非数字做行首的字符,后面再接4个连续字符,后面不接字符,结束
| 以数字做行首的连续4个数字,后面不接字符,结束
总结 行首数字的情况下,行尾有字符和无字符
行首是非字符的情况下,行尾有字符和无字符
所以还可以合并同类项
grep "\(^[0-9]\|[^0-9][0-9]\)[0-9]\{2\}\([0-9][^0-9]\|[0-9]$\)" grep.txt
关于转义
// 原始写法
grep "aaa.*bbb.*aaa.*bbb" grep.txt
// 变成引用的方式写法,此处的\1是一个变量,代表aaa,\2代表bbb
grep "\(aaa\).*\(bbb\).*\1.*\2" grep.txt