正则表达式使用方式及作用:
正则表达式就是通过处理字符串的方法,可以让用户轻松搜索/替换某特定的字符串。
正则表达式类型:
正则表达式分为:基本正则表达式和扩展正则表达式
grep和基本正则表达式的关系:
grep是强大的文本搜索工具,支持基本正则表达式,通过元字符去匹配搜索,替换字符。搜索迅速,方便,智能化。
一,基本正则表达式的元字符:
字符匹配:
. :匹配任意单个字符
[]:匹配指定范围内的任意单个字符
[0-9] [[:digit:]]匹配任意一个数字
[a-z] [[:lower:]]匹配任意一个小写字母
[A-Z] [[:upper:]]匹配任意一个大写字母
[[:space:]]匹配空白字符
[[:paunct:]]
[[:alpha:]]匹配任意一个字母
[[:alnum:]]匹配任意一个字母或数字
[^]:匹配指定范围外的任意单个字符
*:任意长度,它前面的字符可以出现任意次
例如: x*y = xxy
\?:0次或1次,它前面的字符是可有可无
例如: x\?y =xy y
\{m\}:m次,它前面的字符要出现m次
例如:x\{2\}y=xxy
\{m,n\}:至少m次 至多n次
例如x\{2,5\}y = xxy
\{m,\}:至少m次
\{0,n\}:至多N次
.*:任意长度的任意字符
位置锚定:
^:行首锚定 写在模式最左侧
$:行尾锚定 写在模式最右侧
^$:空白行
不包含特殊字符的连续字符组成的串叫单词:
\<:词首 出现于单词左侧
\>:词尾 出现于单词右侧
分组:
\(\)
例如:\(ab\)*
分组中的模式匹配到的内容,可由正则表达式引擎记忆在内存中,之后可被引用。
引用:
例如\(ab\(x\)y\).*\(mn\)
有编号:左到右的左括号,与其匹配右括号
\#:引用第n个括号所匹配前面的内容,而非模式本身
例如:\(ab\?c\).*\1 =abcmnabc
命令选项:
-v:反向选取
-o:仅显示匹配的字串,而非字串所在的行
-i:忽略字符大小写
-E:支持扩展正则表达式
二,基本正则表达式的元字符示例:
示例1(字符匹配:[a-z]匹配范围内的任意字符[[:digit:]]匹配任意一个数字)
示例2(次数匹配元字符\{m\}:m次,它前面的字符要出现m次)
示例3(位置锚定:\<:词首锚定)
示例4(分组:\(\)模式)
通过命令别名可以改变搜索到字符的字体
命令:alias grep='grep --color=auto'^C
注:通过以上命令可立即生效,想要永久保存有效,修改配置文件。
示例1 [a-z]
示例2次数匹配元字符:用于实现指定其前面的字符所能够出现的次数
\{m\}:m次,它前面的字符要出现m次
例如:1\{2\}y=1128
示例3位置锚定:
\<:词首 出现于单词左侧
示例4 分组:
\(\)
例如:\(12\)*
*:匹配任意长度的字符
\<:词首锚定
三,egrep支持正则表达式:
扩展正则表达式除了基本正则表达式几个元字符不同,基本一致。