正则表达式

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

正则表达式的特殊字符

字符表示

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

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

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

[: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 11:01
下一篇 2017-08-03 19:30

相关推荐

  • N25-第十三周博客作业

    1、建立samba共享,共享目录为/data,要求:(描述完整的过程) 1)共享名为shared,工作组为magedu;2)添加组develop,添加用户gentoo,centos和ubuntu,其中gentoo和centos以develop为附加组,ubuntu不属于develop组;密码均为用户名;3)添加samba用户gentoo,centos和ubu…

    Linux干货 2017-04-19
  • vi与vim的使用

    一、引言     在Linux中,vi(Visual Interface)是标准的编辑器,功能强大到不逊于任何最新的编辑器。无论在Linux中还是在Unix中,vi的使用方法都是完全相同的。vim(Vi Improved)在vi的基础上增加了很多新特性。 二、模式     vim…

    Linux干货 2016-08-11
  • Linux 网络管理

    Linux 网络管理 第一篇:计算机网络基础: 一、计算机网络: 1.TCP/IP:协议栈(使用中的模型)     ISO(国际标准化组织):OSI(开放系统互联基本参考模型),学习中的模型。           1)各层之间的相关协议和单位:     互联网…

    Linux干货 2016-09-06
  • shell脚本编程之补充知识点

    一、处理用户输入   shell中使用read命令来实现与用户的交互输入。   格式:read [options] 变量    常用选项:      -p “提示信息”:显示提示信息;      -t #:等待用户输入的秒数;     &n…

    Linux干货 2016-02-14
  • (总结)RHEL/CentOS 7.x的几点新改变

    PS:RHEL7和CentOS7出来有一段时间了,拿出点时间研究下,有几个地方跟6和5系列相比改变比较大,估计不少童鞋有点不太习惯。下面简要举例说明改变比较大的要点: 一、CentOS的Services使用了systemd来代替sysvinit管理 1、systemd的服务管理程序:systemctl是主要的工具,它融合之前service和chkconfig…

    Linux干货 2015-02-10
  • Linux的发展史

       在早期电气化发展时代1946年诞生了计算机事物,早期的计算机体积巨大,只能适用于一个人操作,而且运行速度慢。但已经形成计算机的架构体系,为了尽可能的榨干计算机资源在计算机发展的二阶段,于是有当时著名实验室BELL ,GE,MIT共同研发了一款叫MULTCS操作系统,这也是最早的操作系统。   1946年一个没有完成的梦想,…

    Linux干货 2016-10-13