正则表达式

正则表达式是一种以一些字符赋予特殊意义之后,用来表达字符串,用以筛选各种形式的字符串用来进行查找、替换、删除等各种文本编辑作用的一种表示方式。

正则表达式的特殊字符

字符表示

.   可以表示任意可打印字符

[] 中括号范围内任意单个字符

[^] 中括号范围外任意单个字符 (相对所有可打印字符)

[:space:] 表示任意单个空白字符

[:digit:] 任意单个数字

[:lower:] 任意单个小写字母

[:upper:] 任意单个大写字母

[:alnum:] 任意单个字母或数字

[:alpha:] 任意单个字母

[:punct:] 任意单个标点符号

[:cntrl:] 任意单个控制字符

[:graph:] 任意单个图形字符

[:xdigit:] 任意单个十六进制字符

字符次数

* 表示一个字符重复任意次

+ 表示一个字符重复一次以上

? 表示一个字符重复一次或零次
{n} 表示重复n

{n,m} 表示重复最少n次,最多m

{,m} 表示重复最多m

{n,} 表示重复最少n

位置锚定                

^ 确定位置为行首

$ 确定位置为行尾

\< 确定单词首

\> 确定单词尾

分组与引用   分组每一个配对的括号之间的内容就是一个分组,每一个分组就是一个整体,整体可以用最左变数第n个左括号,用\n 后项引用。

(a+(b))  \1=a+(b)

\2=b

如:显示passwd文件中用户名与shell名相同的行。

正则表达式 

这个是个典型的后项引用,\1 就是引用的括号里面的内容。这才能达成用户名与shell相同的需求。

正则表达式 

 

引用模式,只能用正向思维构建,不能用反向思维构建。

就比如

 

用正则表达式取出一个文件的路径 /etc/rc.d/inint.d/functions/

我想的有两种思路,

一种直接取路径,第二种就是先取出基名然后再取反取出路径。

第一种就是

正则表达式 

思路就是^锁定词首,./*表示之后不管路径多长之后总是/为终点,\<表示锁定词首,就是说后面还有一个单词。

第二种就是

正则表达式 

思路就是先是括号内的是一个整体,作用是取出基名,然后在外面加上[^]达到取反,从而取出路径,但是没有结果。

原因是[^]取反的是指定范围外的单个字符,然而括号括起来的是一个整体,不是一个字符,所以就会出现语法错误,同时也知道了中括号中不能套小括号。

原创文章,作者:何必呢,如若转载,请注明出处:http://www.178linux.com/83544

(0)
何必呢何必呢
上一篇 2017-08-02
下一篇 2017-08-03

相关推荐

  • Homework Week-12 LAMP部署

    1、请描述一次完整的http请求处理过程;     http全称超文本传输协议,属于应用层协议;常见客户端应用是各种浏览器。     一次服务器端完整http请求处理过程:     (1)建立或处理连接:接收请求或拒绝请求;     (2)接收请求:接收来自于…

    Linux干货 2016-12-05
  • 压缩解压缩 tar 主要掌握

    compress [-dfvcVr] [-b maxbits] [file …] -d: 解压缩,相当于 -c: 结果输出至标准输出,不删除原文件 单纯-c 会出乱码 所以 > .. -v: 显示详情 uncompress解压缩 zcat file.Z > file  ##没人用  因为压缩比不高  …

    Linux干货 2016-08-21
  • vim基本总结

    ASCII可以将计算机存储的0或1转成我们认识的文字。在Linux中,绝大部分的配置文件都是以ASCII的纯文本形态存在。通过文本编辑器,可以实现对这些文本文件的更改。常风的文本编辑器有emacs, pico,nano,joe与vi(vim是vi的升级版)等。那么为会么要学vi呢? l 因为vi是内置编辑器,系统安装好就有了 l 很多软件…

    2017-08-05
  • 计算机的组成及其功能

    计算机现如今已经成为了我们生活中不可缺少的一部分,那么它是由什么组成的呢?简单来说,计算机系统是由硬件系统(hardware system)和 软件系统(software system)两部分组成。 Mac电脑背景图.jpg 下面我们来罗列一下计算机系统的主要组成,请看下图 计算机系统组成.png 计算机的功能 我们知道计算机十分强大,那么它都有哪…

    Linux干货 2017-08-23
  • 文件管理初探(inode理解)及管道和IO重定向

    第一部分    文件管理初探   1、Linux系统上各主要目录的简介           /  根,所有文件的起点     ├── bin    存…

    Linux干货 2016-07-29
  • 马哥教育网络班N22期+第9周课程练习

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #!/bin/bashnolo_user=0login_user=0while read user;do    bash_type=$(e…

    Linux干货 2016-10-21