正则表达式笔记(grep)
1,什么是正则表达式? 简单来说就是用正则表达式语言创建的,进行文本内容的匹配、查找特定字符串或替换工作,对文本操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”通常我们就称为正则表达式. 2,正则表达式的应用场景? 用来进行文本内容的查找,或进行替换,适合文本文件查找替换的内容量比较大且有相同规则的字符串 3,给定一个正则表达式和另一个字符串,我们可以达到如下的目的: a. 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”); b. 可以通过正则表达式,从字符串中获取我们想要的特定部分。 4,正则表达式特点: a. 灵活性、逻辑性和功能性非常的强; b. 可以用非常简单的方式达到字符串的复杂控制。 c. 比较难理解掌握 5,正则表达式的组成: 主要有普通字符和元字符组成的一组有规则的字符组合形成。其中普通字符就是一些数字,大小写字母,而元字符则是在正则表达式中,规定了的代表特殊含义的字符,称为元字符。元字符,不表示字符本身的意义,用于额外功能性的描述。 6,下面介绍grep工具:
grep :Global search Regular Expression(RE) and Print out the line (全局搜索正则表达式并把行打印出来) 正则表达式主要有: grep 基本正则表达式 egrep 扩展正则表达式 fgrep 固定字串正则表达式 其中: egrep:Extended grep 扩展的grep fgrep:fixed-strings grep 固定字串的grep 注:以下内容将主要介绍grep的使用,egrep,fgrep本文未涉及 使用格式:grep [options] 'pattern' file...... 其中[options]有以下几个常用选项: --color=auto:查找到的字串以红色显示,为显示方便,通常事先定义别名: alias grep=‘grep --color=auto’,让匹配查找到的内容以红色字体显示 -o --only-matching:仅显示查找到的字符串,而非此字符串所在的行一并显示出来 -q --quiet、--silent:(do not write anything to standard output) 匹配到的内容不在屏幕显示,通常用于条件判断,是否查找到,并执行后续程序 -i --ignore-case:以忽略字符大小写形式匹配正则表达式 -c --count:只输出匹配行的计数。 -n --line-number:显示匹配行及 行号。 -v --invert-match:反向显示不能被模式所匹配到的行; -V:显示grep命令的版本 -help 查看grep 命令的使用帮助 7,介绍正则表达式的常见查找(匹配)类型: 以下事例使用到的文本文件为file.txt,其内容为: a1 b ab a b bA a2b a.b a?b xyxy x y xyy xay baba 33bb xxyyyyxx 字符匹配 .:任意单个字符 例子:x.y表示:xxy,xby,x?y []:指定范围内的任意单个字符 其中[]有以下几个表达方式 [0-9]=[[:digit:]] :任意单个数字 [a-z]=[[:lower:]] :任意单个小写字母 [A-Z]=[[:upper:]] :任意单个大写字母 [[:alpha:]]:任意单个英文大小写字母 [[:alnum:]]:任意单个数字或英文大小写字母 [[:space:]]:空白字符 [[:punct:]]:任意标点符号 具体事例及详解 grep "a[0-9]" file.txt 结果: a1 a2b grep "b[a-z]" file.txt 结果: baba 33bb grep "b[A-Z]" file.txt 结果: bA grep "a[[:alpha:]]" file.txt 结果: ab xay baba grep "a[[:alnum:]]b" file.txt 结果: a2b grep "a[[:space:]]b" file.txt 结果: a b grep "a[[:punct:]]b" file.txt 结果: a.b a*b
[^]: 指定范围外的任意单个字符 grep "[^0-9]x" file.txt 结果: xyxy xxyy xxyyyyxx 次数匹配: 用来指定匹配其前面的字符的次数 *:任意次 grep "[[:lower:]]*y" file.txt 结果: xyxy y xxyy xay xxyyyyxx .*:匹配其前面任意长度的任意字符 如:a.*b:ab,aaab,aab,abbbbb
?:0次或1次 grep "x?y" file.txt 结果: xyxy y xxyy xay xxyyyyxx 注:在正则表达式中,会尽可能长的去匹配字符并显示出来,同时也称为正则表达式的贪婪模式匹配。 {m}:匹配m次 grep "a{1}b" file.txt 结果: ab baba
{m,n}:m次到n次 a{1,3}b:ab,aaab grep "a{1,2}b" file.txt 结果: ab baba {m,}:至少m次 grep "b{2,}" file.txt 结果: 33bb {0,n}:至多n次 a{0,2}b:b,ab,aab grep "x{0,2}y" file.txt 结果: xyxy y xyy xay xxyyyyxx 位置锚定:用于指定字符出现的位置 ^:锚定行首 grep "^ab" file.txt 结果: ab
$锚定行尾 b$:ab,xb grep "bb$" file.txt 结果: 33bb ^$:空白行 grep "^x$" file.txt 结果: x
&;str:锚定词首 grep "&;a" file.txt 结果: a1 ab a b a2b a.b a?b str&;:锚定词尾 grep "b&;" file.txt 结果: b ab a b a2b a.b a?b 33bb 分组:() grep "[[:digit:]](bb)" file.txt 结果: 33bb 引用: 1:后向引用,引用前面的第一个左括号以及与之对应的右括号中的模式所匹配的内容 grep '[Tt].*[Rr]' passwd grep '[Tt][^[:punct:]].*[Rr]' passwd grep 常用选项 -A #:after 匹配到行和下#行 -B #: before 匹配到行和上#行 -C #: context上下文 匹配到行和上下#行 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Oracle数据库性能优化视频课程套餐(案例、实战、详细、全面
- vueJS报错记录列表以及解决方案
- oracle – 将唯一索引更改为唯一索引
- c# – 将Ninject 2.0与ASP .Net 3.5一起使用
- c# – 如果ThreadPool.QueueUserWorkItem()返回FALSE,我该如
- c# – 将datetime转换为字符串时出错
- c# – 是否有可能伪装成比实际更低的.NET版本?
- reactjs – 如何从react-router获取当前位置?
- ruby – TypeError:无法访问Arel :: Nodes :: Union
- 正则表达式Reguler Expression (with python re)
- 更改underlineColorAndroid on Focus for TextIn
- JS 拦截全局ajax请求实例解析
- PostgreSQL SELECT INTO和INSERT INTO SELECT 两
- fastjson和gson对json中数据类型和格式的兼容性对
- 基于stm32f103zet6之nor flash的学习
- c# – 写成名称[x,y]的数组而不是名称[x] [y]
- flash 中.Swf 格式的文字 转化为 word 或pdf 或
- 没有带有设置和转换器参数的Json.net构造函数
- flutter – 如何在垂直(高度)和水平(宽度)方向上
- React Native 之ScrollView轮播图实现