Linux学习总结(六): 正则表达式

1、什么是正则表达式
  正则表达式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为,正则表达式通过一些特殊的符号的辅助,可以让用户轻易达到查找、删除、替换某特定字符串的处理程序。正则表达式基本上是一种“表示法”,只要工具程序支持这种表示法,那么该工具程序就可以用来作为正则表达式的字符串处理之用。常用的工具有vi、grep 、awk 及sed 等。
  
2、语系对正则表达式的影响
  在使用正则表达式时,需要特别注意当时的环境的语系为何,否则可能会发现与别人的不相同的选取结果。通常用的语系设置是 “LANG=C”
  另外为了避免因为语系的不同英和数字的选取问题,我们需要记住以下一些常用的特殊符号

特殊符号代表意义
[:alnum:]代表英文大小写及数字,即0-9、 A-Z、a-z
[:alpha:]代表英文大小写字符,即 A-Z,a-z
[:digit:]代表数字 即 0-9
[:lower:]代表小写字母 a-z
[:upper:]代表大写字母 A-z

备注:查找字符串的常用操作示例

//查找在文本中不包含字符的操作使用-v 其中n 表示显示 
grep -vn 'the' regular_express.txt
//忽略大小写的操作
grep -in 'the' regular_express.txt

3、基础正则表达式常用操作总结

字符描述示例
\将下一个字符标记为一个特殊字符、或一个原义字符{} 因为{与}的符号在shell中是有特殊意义的,必须要使用\的转意它
^通常情况下表示行首,但是如果^出现在[]中则表示‘反向选择’^[a-z]表示以小写字母开头的行,^[^a-zA-Z] 表示不以字母开头的行
.代表一定有一个任意字符的字符例如:grep -n ‘e.e’ test.txt 可以匹配到exe ,eae等
行尾符google$ 表示以google 结尾的行
*匹配前一个字符(前面的子表达式)零次或多次例如,zo* 能匹配 “z” 以及 “zoo”。 * 等价于{0,}。
{n}n 是一个非负整数。匹配确定的 n 次例如:’o{2}’ 不能匹配 “Bob” 中的 ‘o’,但是能匹配 “food” 中的两个 o。
{n,}n 是一个非负整数。至少匹配n 次例如:’o{2,}’ 不能匹配 “Bob” 中的 ‘o’,但能匹配 “foooood” 中的所有 o。’o{1,}’ 等价于 ‘o+’。’o{0,}’ 则等价于 ‘o*’。
{n,m}m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次例如: “o{1,3}” 将匹配 “fooooood” 中的前三个 o。’o{0,1}’ 等价于 ‘o?’。请注意在逗号和两个数之间不能有空格。

4、扩展正则表达式常用操作总结

字符描述示例
+匹配前一个字符(前面的子表达式)一次或多次例如,’zo+’ 能匹配 “zo” 以及 “zoo”,但不能匹配 “z”。+ 等价于 {1,}。
匹配前面的子表达式零次或一次例如,”do(es)?” 可以匹配 “do” 或 “does” 中的”do” 。? 等价于 {0,1}。
|用或(or)的方式找出数个字符串例如:搜寻gd或good这两个字符串egrep -n ‘gd|good’ test.txt
()找出群组字符串例如:搜寻(glad)或者(good)这两个字符串,因为g与d是重复的,所以,我就可以将la与oo列于()当中,并以
()+多个重群组的判别例如:将AxyzxyzxyzxyzC用echo叫出,然后再使用如下方法搜寻 egrep ‘A(xyz)+C’ test.txt上面的例子意思是说,我要找开头是A结尾是C,中间有一个以上的“xyz”字符串的意思。

备注:如果包含了扩展正则表达式中的符号,则需要使用egrep

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值