【Linux】正则表达式
来源:互联网 发布:android登陆界面源码 编辑:程序博客网 时间:2024/06/16 21:34
正则表达式是处理字符串的一种表示方法,分为基准正则表达式 和扩展正则表达式。
注:是grep正则表达式的Extended规范,Basic规范也有这些语法,只是字符?+{}|()应解释 为普通字符,要表示上述特殊含义则需要加\转义。如果用grep而不是egrep,并且不加-E参数,则 应该遵照Basic 规范来写正则表达式。 (一定要注意!!!!!)
注意: 正则表达式参数用单引号括起来了,因为正则表达式中用到的很多特殊字符在Shell中也有特殊 含义(例如),只有用单引号括起来才能保证这些字符原封不动地传给grep命令,而不会被Shell解释掉。
grep 就是支持正则表达式的工具。我们使用grep工具来处理字符串。
grep的基本语法
grep --color=atuo是关键词部分使用颜色显示-n 显示行号 -i 忽略大小写-R 递归查找-v 反向选择,不包括的显示-A 后面加数字,为after的意思,除了列出改行,后序的n行也列出来-B 后面加数字,为before的意思,除了改行,之前的n行也列出来
在关键词显示方面,每次都要加 –color=auto,比较麻烦,可以用alias。
在~/.bashrc 这个文件内 加上 alias grep=’grep –color=auto’
然后 执行 source ~/.bashrc
这样每次执行grep 都会自动加上颜色显示。
正则表达式的组成
正则表达式由三部分组成字符类,数量限定符 位置限定符
字符类
注:下面编辑一个文件,以文档练习语法,
可以在Linux下 直接下载,把下面的东西复制到bash上,
wget http://linux.vbird.org/linux_basic/0330regularex/regular_express.tx
或者复制下面的内容
"Open Source" is a good mechanism to develop programs.apple is my favorite food.Football game is not use feet only.this dress doesn't fit me.However, this dress is about $ 3183 dollars.GNU is free air not free beer.Her hair is very beauty.I can't finish the test.Oh! The soup taste good.motorcycle is cheap than car.This window is clear.the symbol '*' is represented as start.Oh! My god!The gd software is a library for drafting programs.You are the best is mean you are the no. 1.The world <Happy> is the same with "glad".I like dog.google is the best tools for search keyword.goooooogle yes!go! go! Let's go.# I am VBird
注意:最后一行是一行空行
练习开始
由于.是特殊字符,所以需要转义 .
例题1、grep 基本语法,-i -n
例题2、[]匹配括号中的任意字符串
在[0-9]表示范围
在[^ abc] 表示匹配除括号内字符外的任意字符
数量限定符
grep匹配是贪心匹配,尽可能多的匹配,在练习中细细体会这个贪心匹配。
例题3、任意一个字符. 与重复字符 *
.(小数点):代表的是一定有任意一个字符的意思
*(星号):代表的是重复前面一个单元0次或多次的意思,为组合形态
找出匹配g开头g结尾的 一共四个字符
grep -n 'o*' regular_express.txt
可以猜一下上面打出什么字符串
注意*可以匹配重复前一个单元0次的 字符串。
所以 会打出所有的字符串
至少两个 o 以上的字符串时,就需要 ooo*
打出g开头 g结尾的 任意字符串
你可能猜想是g*g 这种想法是错误的,
分析:*可以匹配前面单元0次,所以整个得到的是g,gg,ggg,gggg类似的
所以正确的是 g.g 前面加上一个. 表示匹配一次任意字符, 表示匹配之前的任意字符 0次或多次
比较? * + 的区别
分析:
? 匹配前面的一个单元a 0次或1次,ca 匹配1次,c 匹配0次,ca匹配1次
+ 匹配前面一个单元a 1次或多次,ca 匹配1次,caaaa匹配多次
* 匹配前面一个单元a 0次或多次, ca 1次,c 0次,caaaaa 多次
例题4、限定连续 RE 字符范围 {}
这个就比较容易体现贪心匹配, 尽可能的匹配,
位置限定符
查找qq邮箱
grep -E '^[1-9][0-9]{3,11}@qq\.com$'
分析:
^[1-9] 表示 开始部分匹配1-9任意一个字符
[0-9]{3,11}表示之后匹配0-9任意字符出现至少3次,最多11次
com$ 表示行末位置匹配com
匹配电话号码
grep -E '^1[35678][0-9]{9}$'
分析:电话号码11位,
^1 表示起始位置匹配1
[25678] 表示第二位匹配35678中的任意一个字符
[0-9]{9}$ 表示 剩余的9位匹配0-9的任意字符,并且以数字结尾
特殊字符
匹配ip地址
grep -E '^[1-2][0-9]{0,2}(\.[0-9]{1,3}){3}$'
分析:
. 表示对.进行转义
(.[0-9]{1,3}){3} 表示已 前面的括号里面为一个单元出现3次
注:更多的例子 可以看《鸟哥的Linux私房菜:基础学习篇》
- Linux正则表达式-表达式
- Linux正则表达式-编写正则表达式
- linux 正则表达式
- 正则表达式(linux/C++)
- Linux 正则表达式语法
- Linux之正则表达式
- linux c 正则表达式
- linux c 正则表达式
- linux C正则表达式
- linux c 正则表达式
- Linux正则表达式
- linux 操作正则表达式
- Linux下正则表达式
- linux 正则表达式
- linux正则表达式指南
- Linux shell: 正则表达式
- linux的正则表达式
- 正则表达式 linux shell
- java的包Package中同名类的冲突及其理解
- ARM驱动之流水灯
- windows系统numpy的下载与安装教程
- 深入正则表达式应用
- 华为机试:简单密码破解、字符串通配符
- 【Linux】正则表达式
- Windows下安装python和pip
- C语言结构体与位段
- C语言基础笔记
- 1729. blockenemy (Standard IO)
- 如何在vs2008,vs2010的解决方案管理器中快速定位文件位置
- 【Unity学习笔记】——基础篇:关于光照GI
- Hadoop平台搭建之Linux实验环境
- java之基本数据类型(笔记)