西西软件园多重安全检测下载网站、值得信赖的软件下载站!
软件
软件
文章
搜索

首页西西教程Linux → LINUX系统学习正则表达式详解

LINUX系统学习正则表达式详解

相关软件相关文章发表评论 来源:西西整理时间:2013/11/10 10:04:47字体大小:A-A+

作者:西西点击:27次评论:1次标签: 正则表达式

糗事百科Android10.8.1 官方最新版
  • 类型:新闻资讯大小:23.6M语言:中文 评分:10.0
  • 标签:
立即下载

一.linux文本查找命令

在说linux正规表达式之前,还介绍下linux中查找文本文件常用的三个命令:

1.grep : 最早的文本匹配程序,使用POSIX定义的基本正则表达式(BRE)来匹配文本。

2.egrep : 扩展式grep,其使用扩展式正规表达式(ERE)来匹配文本。

3.fgrep : 快速grep,这个版本匹配固定字符串而非正则表达式。并且是唯一可以并行匹配多个字符串的版本。

如下简单的介绍grep命令:

语法格式:

grep [options ...] pattern-spec [files ...]

用途:

匹配一个或多个模式的文本行。

options:

-E : 使用扩展正则表达式进行匹配, grep -E 或取代 egrep 命令。

-F : 使用固定字符串进行匹配, grep -F 或取代传统的fgrep命令。

-e : 通常第一个非选项的参数认为是要匹配的模式,也可以同时提供多个模式,只要将其放入单引号,并用换行字符分隔他们。

  模式以减号开头时,为防止混淆其为选项,-e选项说明其后的参数为模式,即使他以减号开头。

-f : 从pat-file文件读取模式作为匹配。

-i : 模式匹配时忽略大小写差异。

-l : 列出匹配模式的文件名称,而不是打印匹配的行。

-q : 静默的,如果匹配成功,不将匹配的行输出到标准输出;否则即是不成功。

-s : 不显示错误信息,通常与-q并用。

-v : 显示不匹配模式的行。

说明:可以同时查找多个文件中的内容,当指定多个文件时,每个显示出的文件行前会有文件名加一个冒号标识其来自哪个文件。

可以使用多个-e 或 -f 选项,建立要查找的模式列表。

二.正则表达式简要介绍

1.正则表达式的组成

(1).一般字符:没有特殊意义的字符

(2).特殊字符(meta字符):元字符,有在正则表达式中有特殊意义

2.如下讲下正则表达式中的常见meta字符

(1).POSIX BRE与ERE中都有的meta字符:

\   :  通常用于打开或关闭后续字符的特殊含义,如\(...\)与\{...\}

.   :   匹配任何单个字符(除NUL)

*  :   匹配其前的任何数目或没有的单个字符,例: . 表示任一字符, 则 .* 匹配任一字符的任意长度

^  :   匹配紧接着的正则表达式,BRE中仅在正则表达式的开头有特殊的含义,ERE中在任何位置都有特殊含义

$  :   匹配前面的正则表达式,在字符串或者行结尾处。BRE中仅在正则表达式的结尾处有特殊的含义,ERE中在任何位置都有特殊含义

[]  :   匹配方括号内的任一字符,其中可用连字符(-)指的连续字符的范围;^符号苦出现在方括号的第一个位置,则表示匹配不在列表中的任一字符,

(2).POSIX BRE中才有的字符:

\{n,m\} : 区间表达式,匹配在它前面的单个字符重现的次数区别。\{n\}指重现n次;\{n,m\}指重现n至m次;

\( \) : 保留空间,可以将最多9个独立的子模式存储在单个模式中。如\(ab\).*\1 : 指匹配ab组合的两次重现,中间可存在任意数目的字符。

\n : 重复在\(与\)方括号内第n个子模式至此点的模式。

(3).POSIX ERE中才有的字符:

{n,m} : 与BRE的\{n,m\}功能相同

+ : 匹配前面正则表达式的一个或多个扩展

? : 匹配前面正则表达式的零个或一个扩展

| : 匹配|符号前或后的正则表达式

( ) : 匹配方括号括起来的正则表达式群

(4). 方括号([])表达式

4.1.字符集  [:  :]

标识字符集,有如下几种:

[::alnum] : 数字字符[:digit:] : 数字字符[:punct:] : 标点符号字符
[:alpha:] : 字母字符[:graph:] : 非空格字符 [:space:] : 空格字符
[:blank:] : 空格与定位字符[:lower:] : 小写字母字符[:upper:] : 大写字母字符
[:cntrl:] : 控制字符[:print:] : 可显示的字符[:xdigit:] : 16进制数字

 4.2.排序符号

指将多个字符视为一个符号,如[.ch.]即将ch视为一个符号

4.3.等价字符

认为多个字符相等,如[=e=]在法文的locale里,可匹配于多种与e相似的字符,此处不再列出。

说明:这三种构造除其自身的方括号之外,还必须使用额外的方括号括起来。

例 : [[:alpha:]!] : 匹配任一英文字母或感叹号。

        [[.ch.] : 匹配ch排序元素,而不匹配单独的字母c或h.

 3.简单正规表达式匹配案例

china  :  匹配此行中任意位置有china字符的行

^china : 匹配此以china开关的行

china$ : 匹配以china结尾的行

^china$ : 匹配仅有china五个字符的行

[Cc]hina : 匹配含有China或china的行

Ch.na : 匹配包含Ch两字母并且其后紧跟一个任意字符之后又有na两个字符的行

Ch.*na : 匹配一行中含Ch字符,并且其后跟0个或者多个字符,再继续跟na两字符

二.实例

如下通过常用实例来学习BRE和ERE匹配,源文件url.txt内容如下:

www.baidu.com
http://www.baidu.com
https://www.baidu.com
http://wwwbaiducom
baidu.com
baidu

1.url匹配

匹配以http或者https开头,并且其后为:并且含有.的串

BRE匹配:

grep '^https\{0,1\}.*\..*' url.txt

ERE匹配:

grep -E '^https?.*\..*' url.txt

匹配结果如下:

http://www.baidu.com
https://www.baidu.com

2.Email匹配

示例文件内容为:

hfutwyy@qq.com
aaaa@
aaa@.com
aaa@gmail.com

@@baidu.com

匹配以字母数字或者下划线开头的多个字符,其后有一个@之后有多个字母数字或者下划线,其中有一个.号

grep '^[[:alpha:][:digit:]_]*@[[:alpha:][:digit:]]*\..*' email.txt

 匹配结果:

hfutwyy@qq.com
aaa@.com
aaa@gmail.com

先到这里,后续再接着写。

    手机笑话
    (176)手机笑话
    笑话是人们日常生活中经常会出现的一个有趣对话,在人与人之间的沟通中,笑话无疑是很好的催化剂,熟练的掌握一定的笑话有益于社交,西西本页为大家提供手机笑话软件下载大全手机笑话简介手机笑话大全,这里有最冷最全最新潮的笑话让你从此告别讲笑话而冷场的尴尬,成为活跃气氛的笑话高手,还有更多爆笑图片雷人事恶搞网文奇闻趣事,放松心情,轻松解压,居家旅行开心必备,绝对是你等公交等地铁打发无聊时光不二之选...更多>>
    知乎日报
    (61)知乎日报
    知乎日报是知乎推出的一款客户端软件,知乎作为一款高质量问答社区,每日为用户提供数十条有价值的问题解答,而用户也可以根据自己的兴趣爱好预订解答类型,内容涉及生活的方方面面。产品特性由亲历者内行专家直接发声,一直追求为你呈现最有价值的分享满足最奇妙的好奇心,搜罗全球值得讨论的话题,由扎根世界各地的朋友们带给你最真实的当地情况每天固定精品板块,独家供应神级吐槽及深夜食堂,各种一针见血帮你临睡充电支持夜间...更多>>
    笑话软件
    (20)笑话软件
    西西软件园笑话软件专区为您提供各种笑话软件下载,包含笑话大全爆笑笑话幽默笑话笑破你的肚子的笑话笑话故事长短短笑话等等,只要你想得到的都有哦笑话有哪些分类笑话按照类别可以分为古代笑话,军旅笑话,儿童笑话,动物笑话,愚人笑话,夫妻笑话,成人笑话,幽默笑话,冷笑话,网络笑话,恐怖笑话,民间笑话,医疗笑话,体育笑话,交往笑话,交通笑话,名人笑话,家庭笑话,恶心笑话,爱情笑话,各地方言笑话等等。虽然其他各个...更多>>
    • 糗事百科Android10.8.1 官方最新版

      01-21 / 23.6M

      推荐理由:糗了那么久没有一款真正意义上的糗事百科客户端,倒是蛮糗的,资深糗友强烈推荐,真正好用的客户端。马上体
    • 内涵段子V6.0.1 安卓版

      01-21 / 19.7M

      推荐理由:内涵段子app是一款android手机上的笑话集锦应用。内涵段子安卓版是一款集笑话、恶搞文章的手机应用,人气爆
    • 百思不得姐手机版6.6.5 安卓版

      02-14 / 31.4M

      推荐理由:百思不得姐是互联网上最权威的创意YY段子发布平台,每天超过数万人的浏览量,收录了各种创意成人段子,搞怪
    • 捧腹笑话 安卓版V1.14

      06-09 / 1.5M

      推荐理由:捧腹网是中国领先的幽默笑话分享网站,致力于提供分享各类幽默笑话、搞笑图片、动态图、搞笑视频、经典段子
    • 笑话万篇安卓版v4.83

      05-25 / 7.3M

      推荐理由:笑话万篇,一款笑话阅读应用,该应用包含了大量的笑话段子,每天看一会,放松心情,保持良好的心态
    • 冷笑话精选v4.2 安卓版

      03-02 / 34.6M

      推荐理由:冷笑话精选是一个很热门的公众微博账号,专门收集何种经典的冷笑话,相信有不少朋友关注过这个微博,这是他
    百阅手机阅读器
    (42)百阅手机阅读器
    百阅手机阅读器功能全面,支持格式多,百阅是一款阅读和社区一体化的手机阅读互动社区软件,支持在手机上离线或在线阅读和格式的手机电子书杂志漫画,即时写作书评发布书摘同步微博,带来以阅读为核心的社交互动新体验。...更多>>

    相关评论

    阅读本文后您有什么感想? 已有人给出评价!

    • 8 喜欢喜欢
    • 3 顶
    • 1 难过难过
    • 5 囧
    • 3 围观围观
    • 2 无聊无聊

    热门评论

    最新评论

    发表评论 查看所有评论(1)

    昵称:
    表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
    字数: 0/500 (您的评论需要经过审核才能显示)