正则表达式 初学

正则表达式使用方式及作用

正则表达式就是通过处理字符串的方法,可以让用户轻松搜索/替换某特定的字符串。


正则表达式类型

正则表达式分为:基本正则表达式和扩展正则表达式


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

注:通过以上命令可立即生效,想要永久保存有效,修改配置文件


spacer.gif


示例1 [a-z]

[[:digit:]]匹配任意一个数字

wKiom1V1T3jzdnD2AABiX0p-0VU518.jpg


示例2次数匹配元字符:用于实现指定其前面的字符所能够出现的次数

\{m\}:m次,它前面的字符要出现m次

例如:1\{2\}y=1128

wKiom1V1UImDJEJ7AABTNb6i92M915.jpg


示例3位置锚定:

\<:词首 出现于单词左侧

wKioL1V1Ux3jbeG4AACnpmMowN8873.jpg


示例4 分组:

\(\)

例如:\(12\)*

*:匹配任意长度的字符

\<:词首锚定

wKioL1V1VE2xOmlbAACcpMf6Os8604.jpg


三,egrep支持正则表达式:

扩展正则表达式除了基本正则表达式几个元字符不同,基本一致。

相关文章

一、校验数字的表达式 1 数字:^[0-9]*$ 2 n位的数字:^d{n}$ 3 至少n位的数字:^d{n,}$ 4 m-n位的数字...
正则表达式非常有用,查找、匹配、处理字符串、替换和转换字符串,输入输出等。下面整理一些常用的正则...
0. 注: 不同语言中的正则表达式实现都会有一些不同。下文中的代码示例除特别说明的外,都是使用JS中的...
 正则表达式是从信息中搜索特定的模式的一把瑞士军刀。它们是一个巨大的工具库,其中的一些功能经常...
一、校验数字的表达式 数字:^[0-9]*$ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,}$ m-n位的数...
\ 将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,“n”匹配字符“n”。“\n...