关于正则表达式第二篇

在第一篇中介绍了关于纯文本和特殊字符在正则表达式中的应用,来看看其它的一些相关的点。
--关于锚定

锚定就跟大家在开发网页的时候使用的锚定是一个意思,其实就是给一段字符做个标识。对于行首使用是^,对于行尾使用时$,可能大家并不陌生。
锁定在行首
$ echo "The book store" |sed -n '/^book/p'     --这个命令没有输出,是因为锚定不在行首。
$ echo "Books are great"|sed -n '/^Book/p'    --这个输出可以得到,锚定在行首。
Books are great
$ cat a.txt
this is a test
this is good
cat a.txt |sed -n '/^this/p'         --这个测试的例子也是类似,可以按行查找,找到每行以this开头的语句。
this is a test
this is good

对于字符^,如果只是代表普通的字符,就需要使用转义来实现,要不都会按照锚定字符来处理。
$ echo "This ^ is a test" |sed -n '/s ^/p'    
This ^ is a test
$ echo "^This is a test"|sed -n '/^/p'
^This is a test
$ echo "^This is a test"|sed -n '/^Th/p‘   --这个例子里面,会查找以This开头的部分,所以没有输出
$ echo "^This is a test"|sed -n '/\^Th/p'  
^This is a test

锚定在行尾
锚定在行尾和行首的结果相反,但表达的含义是类似的。
$ echo "This is a good book"|sed -n '/book$/p'   --这个命令查找输出以book结尾的字符
This is a good book
$ echo "This book is good"|sed -n '/book$/p'    --因为这个字符不是以book结尾,所以没有输出
$echo "There are a lot of books"|sed -n '/book$/p‘  --这个因为字符不是以book结尾,也没有输出

组合锚点,这个可能在使用的时候更有意义,把行首锚定和行尾锚定结合起来。其实在很多时候还是很有用的。
$ cat a.txt
I said this is test
this is a test
this is good
This is great
$ sed -n '/^this is good$/p' a.txt   --这个命令输出以this开头以good结尾的部分,只有字符this is good输出了。
this is good
$ sed –n ‘/^$/d’ a.txt –去除空白行,这个可能是锚定使用场景最多的例子了。

--点字符
点字符对于正则表达式也是很重要的一个部分,和*的一个区别是点字符要求至少有一处匹配。
看下面的例子,a.txt的内容如下,希望能够找到每行符合.at的模式,小数点在这个地方要求至少有一处匹配。像最后一行以at开头就会排除掉。

$ cat a.txt
this is a test of line
The cat is sleeping
that is a very good book
i am at home
at this time

$ sed -n '/.at/p' a.txt     --输出的结果如下,5行数据输出了3行。
The cat is sleeping
that is a very good book
i am at home

时间: 2024-09-23 21:26:43

关于正则表达式第二篇的相关文章

正则表达式小结篇

正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式.该模式描述在查找文字主体时待匹配的一个或多个字符串.正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配. 下面小编给大家总结了些关于正则表达式知识点,具体内容如下所示: 1.元字符 [拥有特殊含义的元字符]   \d -> 匹配一个0-9的数字,相当于[0-9],和它相反的是\D ->匹配一个除了0-9的任意字符   \w -> 匹配一个0-9.a-z.A-Z._的数字或字符,相当于[0

关于正则表达式第一篇

正则表达式在编程语言中,数据库中,linux中都有着广泛的应用,一说起正则表达式就有些高深晦涩的味道,正则表达式精炼而重要,在Linux中有着举足轻重的作用,也是学好sed,awk的一个基本门槛. 正则表达式是基于正则表达式引擎来实现的,引擎主要有以下两类.可能大家对这个比较陌生. POSIX基本正则表达式引擎  BRE POSIX扩展正则表达式引擎  ERE 大多数的Linux实现中都是BRE,也是默认的实现,还有扩展的实现就是ERE. 像grep,awk就支持基本和扩展的引擎,sed只支持基

ASP.NET自定义控件组件开发 第一章 第二篇 接着待续

很感谢大家给我的第一篇ASP.NET控件开发的支持!在写这些之前,我也看了一些例子,想选中一些好 上手的例子,这样,可能一些例子大家以前都见过,但是我想说:同样是弹钢琴,同样一首"命运交响曲 ",有的人弹的让人荡气回肠,有的人弹的就很一般. 受了李建忠老师的启发,发现用一种演化式的让人更好的接受. 好了,废话不说了.继续开发!希望大家支持! 我们之前开发了一个很简单的自定义的控件,方法很简单,只是把原来的html文本传入 writer.Writer()方法的参数,然后输出.其实从模式的

JavaScript正则表达式(总结篇)

本文是小编参考其他有关js正则表达式资料整理的,主要目的有两个:一:自我复习归纳总结.二:共享方便大家搜索 .js正则表达式感兴趣的朋友可以一起学习,没有写的知识点,欢迎大家补充,共同学习进步. 验证数字:^[0-9]*$ 验证n位的数字:^\d{n}$ 验证至少n位数字:^\d{n,}$ 验证m-n位的数字:^\d{m,n}$ 验证零和非零开头的数字:^(0|[1-9][0-9]*)$ 验证有两位小数的正实数:^[0-9]+(.[0-9]{2})?$ 验证有1-3位小数的正实数:^[0-9]+

JavaWeb开发入门第二篇Tomcat服务器配置讲解_java

一.Tomcat服务器端口的配置 Tomcat的所有配置都放在conf文件夹之中,里面的server.xml文件是配置的核心文件. 如果想修改Tomcat服务器的启动端口,则可以在server.xml配置文件中的Connector节点进行的端口修改 例如:将Tomcat服务器的启动端口由默认的8080改成8081端口 Tomcat服务器启动端口默认配置 <Connector port="8080" protocol="HTTP/1.1" connectionT

「C语言回顾之旅」第二篇:指针详解进阶

说明:     第一篇回顾了指针的基本概念以及基本使用,因此对指针也有了一个较为清晰的思路,但实际上第一篇关于指针的内容是不太容易忘记的.这是第二篇中的内容是比较容易混淆,但对于指针的进一步学习也是非常重要的. 一.指向函数的指针 1.函数指针 ·函数指针即指向函数的指针,函数指针值为函数的入口地址,通过使用该指针,即可以使用该函数: ·编写一个程序返回两个数的最大值,通过函数指针调用函数: a.main函数代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Android开源项目第二篇——工具库篇

Android开源项目第二篇--工具库篇 本文为那些不错的Android开源项目第二篇--开发工具库篇,主要介绍常用的开发库,包括依赖注入框架.图片缓存.网络相关.数据库ORM建模.Android公共库.Android 高版本向低版本兼容.多媒体相关及其他.   最新内容请访问AndroidOpenProject@Github,欢迎Star和Fork.   Android开源项目系列汇总已完成,包括: Android开源项目第一篇--个性化控件(View)篇Android开源项目第二篇--工具库

【实战HTML5与CSS3 第二篇】绚丽的快速导航!

原文 http://www.cnblogs.com/yexiaochai/archive/2013/05/01/3051632.html 目录 [实战HTML5与CSS3 第一篇]初探水深,美丽的导航,绚丽的图片爆炸!! [实战HTML5与CSS3 第二篇]绚丽的快速导航! [实战HTML5与CSS3 第三篇]我第一个HTML5网页诞生了(提供源码) 前言 今天9点就起来了,因为下午出去有个聚会,所以就早点起来进行,否则这个进度有点吃紧啊,昨天初略的完成了导航以及爆炸的图片,这里来回顾下: 1

CoreOS Fest 系列之第二篇: Systemd、Go、Calico、Sysdig

本文讲的是CoreOS Fest 系列之第二篇: Systemd.Go.Calico.Sysdig,[编者的话]在 CoreOS Fest 第二天的会议中,演讲者展示了多个开源项目和工具,包括 Systemd 和 CoreOS . Go 语言和容器. Calico 项目. Sysdig 等. 在 CoreOS Fest 的第一天会议中,陆续介绍了 CoreOS 的架构.规划和规范.第二天的会议,演讲者展示了多个开源项目和工具,包括 systemd-nspawn . Calico 项目和 Sysd