微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

初步了解正则表达式


什么是正则表达式

正则表达式,又称正规表示法常规表示法英语Regular Expression,在代码中常简写为regexregexpRE),计算机科学一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。

一.正则表达式的各个元字符

字符匹配
. 表示匹配任意单个字符

[]

匹配指定范围内的任意单个字符
[^] 表示非后面的字符,[^a]即为非a的字符
次数匹配元字符
* 他前面的字符可出现任意次
\? 其前面的字符可有可无
\{m,n\} m表示出现的最少次数,取值范围0<=m<n,n表示出现的最多次数,可以省略
.* 表示任意长度的任意字符
位置锚定
^ 锚定行首,即符号后的第一个字符必须是在行首,
$ 锚定行尾,符号的前一个符号必须是行的最好一个字符
\< 锚定词首,符号后的第一个字符必须是一个不含特殊字符的完整单词的第一个字母
\> 锚定词尾,符号的前一个单词必须是一个不含特殊字符的完整单词I的最后一个字母
\(\) 对字符串进行分组,括号内的表示在一组,可以套用多个,括号是有编号的,\n表示第n个括号所匹配到的内容,而不是模式本身


二.grep的常用选项


-V

反向选取,显示非正则表达式匹配的内容
-o 显示匹配到的内容 不显示全行
-C : 显示匹配到内容的前后几行
-E
支持使用正则扩展表达式
-B 显示匹配到内容的后几行
-A
现实匹配到内容的前几行
-i
显示被模式匹配的字串可不是整行ignore-case,忽略大小写




三.各选项和正则表达式的配合使用

grep [option] ...'PATTREN' FILE --color=auto

1.grep �v “#” /etc/fstab 显示没有“#”的行 -v取反

wKioL1PAxHSB1B43AADLzaRw13k451.jpg


2.grep �o \<user1\>/etc/passwd user1被锚定词首词尾�o表示不显示整行

wKioL1PAxIXxfNlOAABz7WAwaBk424.jpg

3.grep �A2 “^zhengzhou\>” /etc/passwd Zhengzhou被锚定了行首�A2表示显示下面两行

wKiom1PAxN6iUWK7AADWnx8vVvw904.jpg

4.grep �B2 “^zhengzhou\>” /etc/passwd -B2表示显示上两行

wKioL1PAxg2iaT1gAADlbXfT8Po997.jpg

5.grep �C2 “^zhengzhou\>” /etc/passwd -B2 表示显示上下两行

wKiom1PAxp-i9OzGAAEsShm_mCY913.jpg

6.grep “tuser*\(.\)\3”/etc/passwd r*表示r可以出现任意次 \.\)表示“.”被分组 \3表示分组被引用了三次

wKiom1PAxtrT-6RtAAHRVHzU2RA068.jpg


7.grep “\(user\).*\1” /etc/passwd .*表示任意字符任意长度

wKioL1PAxv2Dxsn4AAHLKFbm-7Y537.jpg

8.grep “b\{2,4\}” /etc/fstab b\{2,4\} 表示b最少出现2次最多出现4次的行

wKiom1PAxzyyPAjCAABtKDfdQDM995.jpg

四.Grep的扩展egrep grep �E

- grep之下不支持?+这两种modifier,egrep则可.

?: 匹配其前面的字符01次;

+: 匹配其前面的字符至少1

|:表示或关系,ab|bcb表示abbcb

):将部分内容合成一个元组。如ab|bcb等,()的好处是可以对小组使用 + ? * 等。

Grep“tuser|^z” /etc/passwd 查找包含tuser或者以z开头的行

wKiom1PAx0nhSmhRAAHPM9IN1YE295.jpg

个人觉得需要使用egrep是可以用grep �E代替,不仅可以是用egrep的扩展功能还可以减少有出错的概率


本文还有待修改,请谅解!

原文地址:https://www.jb51.cc/regex/361536.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐