正则表达式

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

正则表达式的特殊字符

字符表示

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

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

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

[: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

相关推荐

  • openssl建立私有CA和申请证书

    实验环境: 虚拟机:VMware® Workstation 12 Pro 主机A:ip为10.1.255.55/16,创建CA并给其他主机提供CA服务 主机B:为httpd服务器,ip为10.1.249.115/16 1、查看openssl的配置文件/etc/pki/tls/openssl.cnf [root@localhost…

    Linux干货 2016-09-23
  • 手动自制Mini Linux

        linux系统内核非常的精简,而且基于一切皆文件的思想,使得我们可以再现有系统上挂载一个空硬盘,利用现有系统编译一个内核和相关程序文件并拷贝到空硬盘上。我们就可以用空硬盘来单独运行一个精简的linux系统,这对于依赖于注册表的windows系统来说是不可能实现的。本文简要介绍一下一个mini linux的安装制…

    Linux干货 2016-05-03
  • ocata openvswtich

      一、Controller配置1、安装软件 # yum –enablerepo=centos-openstack-ocata,epel -y install openstack-neutron openstack-neutron-ml2 2、修改配置文件/etc/neutron/neutron.conf [DEFAULT]core_p…

    2018-01-22
  • N25-Bazinga-第三周作业

    N25-Bazinga-第三周作业 1.列出当前系统上登录的所有用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@localhost ~]# w | cut -d' ' -f1 | uniq -c |&nbs…

    Linux干货 2016-12-21
  • Linux下XFS、Ext2文件系统对比、文件管理、inode、文件名、标准I/O、管道|tee、tr -cs blog by fazionlan July.31st

    Linux下XFS、Ext2文件系统对比、文件管理、inode、文件名、标准I/O Ext2、Fat、XFS文件系统   文件系统是对一个存储设备上的数据和元数据进行组织的机制,文件系统的创建是在格式化分区的过程中完成的(一个分区就是一个系统),众所周知Windows操作系统使用的文件系统是FAT与NTFS;Linux不同的发行版本使用的文件系统主…

    Linux干货 2016-08-01
  • 魔术方法

    Edit 魔术方法 使用Python的魔术方法的最大优势在于他们提供了一种简单的方法来让对象可以表现的像内置类型一样。那意味着你可以避免丑陋的,违反直觉的,不标准的的操作方法。 特殊属性 属性 含义 __name__ 类、函数、方法等名字 __module__ 类定义所在的模块名? __class__ 对象或类所属的类 __bases__ 类的基类的元组,顺…

    Linux干货 2017-11-21