grep 正则2
- 基本正则表达式所定义的元字符
| 元字符 | 作用 | 例子 | 例子说明 |
|---|---|---|---|
| ^ | 行首定位符 | ^ty | 匹配"t"开头,后面紧跟一个"y"的字符串 |
| $ | 行尾定位符 | txt$ | 匹配以"t"结尾,前面两个字符是"t""x"的字符串 |
| . | 单个字符匹配 | s. | 匹配"s"后面有一个字符的字符串 |
| * | 限定符 | s* | "*"表示匹配其前导字符若干次,包括0次。这里是匹配有若干个"s"的字符串 |
| [] | 字符集匹配 | [abc] | 表示匹配"a","b"或"c"的字符串 |
| [^] | 字符集不匹配 | [^abc | 表示不匹配"a","b","c"里的任意字符 |
| () | 子表达式 | ([0-9]{2})? | 匹配两个或0个数字 |
| x{m,n} | 区间表达式 | a{2,3} | 表示"a"重复2~3次 |
- 扩展正则表达式的元字符
| 元字符 | 作用 | 例子 | 例子说明 |
|---|---|---|---|
| + | 限定符,同* | s+ | "+"表示匹配其前导字符若干次,至少1次 |
| ? | 限定符 | ss? | "?"表示前面的字符可以重复0或1次。这里是一个"s"后面可能再跟一个"s" |
- POSIX字符集
不同国家的字符编码很有可能不同,例如:
LANG=C:A B C D ... Z a b c d ...z
LANG=zh_TW:a A b B c C d D ... z Z
当采用第二种编码时,[A-Z]之间会包括小写字母b-z。所以为了避免这种问题,可以使用POSIX字符集来使用特定的字符类。
| 字符类 | 说明 |
|---|---|
| [:alnum:] | 匹配任意一个字母或者数字,等价于A-Za-z0-9 |
| [:alpha:] | 匹配任意一个字母,等价于A-Za-z |
| [:digit:] | 匹配任意一个数字,等价于0-9 |
| [:lower:] | 匹配小写字母,等价于a-z |
| [:upper:] | 匹配大写字母,等价于A-Z |
| [:graph:] | 匹配一个看的见的字符,不包括空白字符 |
| [:print:] | 匹配一个可以打印的字符 |
| [:blank:] | 匹配空格和tab |
| [:space:] | 匹配一个空白字符,包括空格、tab、换行、分页符< |
| [:punct:] | 匹配一个标点符号 |
| [:xdigit:] | 匹配一个十六进制数字,即0-9,a-f,A-F |
【注意】这些字符类要放在方括号中,才能表示字符集匹配:[[:alnum:]] = [A-Za-z0-9]
三、grep与正则表达式的例子
(1)简单匹配
#匹配空行
egrep "^$" testfile
#匹配所有英文字符
egrep "[a-zA-Z]" testfile
#匹配tast或者test
egrep "t[ae]st" testfile
#匹配以字符s开头,紧跟若干b的文件名
ll | egrep "^sb*"
#匹配txt文件
ll | egrep "\.txt$" #这里的"."需要进行转义
(2)复杂一些的匹配
#匹配QQ号码,第一位不能是0,5位以上的数字。
egrep "[1-9][0-9]{4,}" testfile
#匹配IP地址,共4组数字,用"."隔开
egrep "^([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])\. #第一组数字
([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])\. #第二组数字
([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])\. #第三组数字
([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])$" #第四组数字
testfile
#匹配邮箱地址
egrep "^[a-z0-9]([a-z0-9]*[-_]?[a-z0-9]+)*@
([a-z0-9]*[-_]?[a-z0-9]+)+[.][a-z]{2,3}([.][a-z]{2})?$"
此处注意:区间表达式{}应该写成"\{\}"表示转义,实验中发现加不加"\"转义都能得出正确结果,但是直接使用基本正则表达式(grep不加-E选项)则不行。所以应该是扩展正则表达式中取消了这个需要转义字符的地方。
四、其他
琐碎的片段:
当需要将元字符当作普通字符匹配的时候,需要转移字符"\",但是当元字符位于"[]"中时,除了"-"或者"^"极少数元字符以外,其它的自动转义为普通字符。
正则表达式从左到右计算,遵循一定的优先级:转义符"\" > 方括号"[]" > 分组 "()" > 限定符"*,+,?,{}" > 普通字符 > 定位符"^,$" > 或"|"。
匹配同一种字符可能有多种正则表达式的写法。
shell本身不支持正则表达式,但是支持"*","?"等通配符。
支持正则表达式的还有sed命令,awk命令。以后可以详述。
作者:tyrone_li
链接:https://www.jianshu.com/p/6c04b85d4544
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
grep 正则2的更多相关文章
- grep 正则表达
常见的 grep 正则表达参数 -c # 显示匹配到得行的数目,不显示内容 -h # 不显示文件名 -i # 忽略大小写 -l # 只列出匹配行所在文件的文件名 -n # 在每一行中加上相对行号 -s ...
- shell grep正则匹配汉字
Shell grep正则匹配中文 测试文本 demo_exe.c,内容如下,需要注意保存的编码格式,对输出到终端有影响: 我们中文操作系统ASNI默认是GBK的. #include<stdio. ...
- liux三剑客grep 正则匹配
001正则匹配(大部分需要转义) ‘^‘: 锚定行首 '$' : 锚定行尾 [0-9] 一个数字 [^0-9] 除去数字所有,^出现在[]这里表示取反 [a-z] [A-Z] [a-Z] \s 匹配空 ...
- grep 正则问题 this version of PCRE is compiled without UTF support
问题 在使用grep -P,出现如下报错: grep: this version of PCRE is compiled without UTF support 原因 有些系统支持的正则规范不同. 解 ...
- sed与grep正则
string editor 流编辑器 sed编辑器是一行一行的处理内容,正在处理的内容存放在缓冲区内,处理完后 按照选项的规定进行输出或者修改文件 option: -n 静默模式结合p可以只输出修 ...
- [Linux] shell中for循环grep正则统计指定关键字
需求是统计某个业务的访问个数日志服务器上的目录结构是如下,搜索最近7天的指定关键字数据,并排重统计个数: drwxr-xr-x root root Nov : -- drwxr-xr-x root r ...
- linux grep 正则
grep : 显示匹配行 -v: 反显示 -e 使用扩展正则表达式 黑色字体表明是原生正则表达式 红色字体表明是扩张正则表达式 1.匹配操作符 \: 转义字符串(正则使用扩展字符操作 没有使用-e ...
- day11 grep正则匹配
ps aus | trep nginx # 查看所有正在运行的nginx任务 别名路径: alias test_cmd='ls -l' PATH路径: 临时修改: PATH=$PATH:/usr/lo ...
- Linux 命令 - grep: 正则搜索文本
grep 搜索文本文件中与指定正则表达式匹配的行 命令格式 grep [OPTIONS] PATTERN [FILE...] 命令参数 Generic Program Information --he ...
- grep 正则匹配
\{0,n\}:至多n次 \{\ 匹配/etc/passwd文件中数字出现只是数字1次到3次 匹配/etc/grub2.cfg文件以一个空格开头匹配一个字符的文件的所有行 显示以LISTEN结尾的行 ...
随机推荐
- spring静态资源配置
优雅REST风格的资源URL不希望带 .html 或 .do 等后缀.由于早期的Spring MVC不能很好地处理静态资源,所以在web.xml中配置DispatcherServlet的请求映射,往往 ...
- Java 枚举(enum)详解
概念: Java1.5发行版本中增加了新的引用类型--枚举类型(enum type).枚举类型是指由一组固定的常量组成合法值的类型.在Java虚拟机中,枚举类在进行编译时会转变成普通的Java类. 创 ...
- Facade——外观模式
Facade外观模式,也是比较常用的一种模式,基本上所有软件系统中都会用到. GOF 在<设计模式>一书中给出如下定义:为子系统中的一组接口提供一个一致的界面, Facade 模式定义了一 ...
- 2019牛客暑期多校训练营(第三场)I Median
题意:给出n-2的中位数序列b,b[i]代表原序列中(a[i],a[i+1],a[i+2])的中位数,求a. 解法:比赛的时候没做出来,赛后看题解的.解法跟网上各位大佬一样:首先要证明其实原序列a中的 ...
- 眼前一亮的WI微逸输入法
手机上找了好多输入法,比如百度,谷歌,手心等,百度太花哨,pass:谷歌不知为何反映慢,也pass:手心颜值低,哈哈!!偶遇WI输入法,试用了不错.故推荐之,下面为界面截图:
- TextView详解
android:autoLink设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接.可选值(none/web /email/phone/map/all)android: ...
- element-ui 复选框,实现点击表格当前行选中或取消
背景: 1.表格结构绑定事件 <el-table v-loading="StepsListLoading" :data="StepsListData" b ...
- AcWing 229. 新NIM游戏 (线性基+博弈论)打卡
题目:https://www.acwing.com/problem/content/description/231/ 题意:给出n堆石子,然后第一回合,A玩家可以随便拿多少堆石子,第二回合B玩家随便拿 ...
- Memory Analyzer Tool定位Java heap space内存泄漏
java heap space是一个很蛋疼的问题,如果开发调试时遇到还好,如果是在项目上线后运行一段时间后,才抛出该异常,那真的很悲剧(那你得找代码中到底是哪里内存泄露了),这真是一个悲伤的故事. 1 ...
- 【Tomcat】1.Tomcat在Windows系统的安装和使用
1.下载与安装 安装Tomcat的[前提条件]是安装好JDK或者JRE(本文略过)Tomcat在Windows系统中可以通过[压缩包]或[安装包]来安装建议使用[安装包]来简化安装步骤登录官网http ...