正则表达式

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

正则表达式的特殊字符

字符表示

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

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

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

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

相关推荐

  • 脚本又见脚本,作业又是作业_第七周

    1、创建一个10G分区,并格式为ext4文件系统; (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl; (2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳; [root@centos ~]# fdisk -l &n…

    Linux干货 2016-12-30
  • https搭建

    https             http over ssl = https 443/tcp                 ssl: v3           &nb…

    Linux干货 2016-06-28
  • Hive深入浅出

    1.  Hive是什么 1) Hive是什么? 这里引用 Hive wiki 上的介绍: Hive is a data warehouse infrastructure built on top of Hadoop. It provides tools to enable easy data ETL, a mechanism to put stru…

    Linux干货 2016-03-22
  • week5:grep命令和find命令的应用

    1.显示当前系统上root、fedora或user1用户的默认shell;     ~]# grep -E "^(root|fedora|user1):" /etc/passwd|cut -d/ -f4 2.找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,形如:hel…

    Linux干货 2016-11-28
  • 图解 lvs 工作原理

    一.lvs 基本工作流程介绍  如图1,ipvsadm定义lvs服务监听的ip和port,并发送给ipvs,而ipvs是工作在netfilter的input钩子上的程序,当input链中有目标ip属于lvs服务的请求报文时,ipvs就会修改该报文的链路,使其不进入用户空间而直接转到postrouting链上,并转发给其中一台real server,…

    Linux干货 2016-10-30
  • Linux文件管理命令

    2018-03-11

    2018-03-11