原文:
https://www.cnblogs.com/hfutwyy/p/3415577.html
一.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 ‘1@[[:alpha:][:digit:]]…*’ email.txt

匹配结果:

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

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


  1. [:alpha:][:digit:]_ ↩︎

Linux里面的正则表达式!相关推荐

  1. GNU/Linux平台上正则表达式的简单使用

    友情提醒:本博文涉及的内容中涉及到的系统实践操作在Centos6.5上实现,GNU/Linux简称为linux,GNU/grep简称为grep,GNU/sed简称为sed,GNU/gawk简称为awk ...

  2. linux正则表达式的使用方法,Linux中基本正则表达式

    正则表达式 的 Linux中基本正则表达式 字符匹配: .  :匹配任意单个字符 [] :匹配指定范围内的任意单个字符: [^]:匹配制定范围外任意单个字符 [:digit:] lower upper ...

  3. linux 常用正则表达式,Linux中基本正则表达式

    字符匹配: .  :匹配任意单个字符 [] :匹配指定范围内的任意单个字符: [^]:匹配制定范围外任意单个字符 [:digit:] lower upper alpha alnum space 匹配次 ...

  4. linux c中字符替换函数,Linux C 支持正则表达式的字符串替换函数

    [root@localhost src]# cat a.c /** * Linux C 支持正则表达式的字符串替换函数 * * Author: cnscn@163.com * Homepage: ww ...

  5. linux运维正则表达式技术分享

    linux运维正则表达式实战视频观看地址 http://edu.51cto.com/course/course_id-1959.html QQ交流群 384467551 linux运维正则表达式实战 ...

  6. linux邮箱格式正则表达式grep,Linux系统grep正则表达式的介绍

    Linux系统正则表达式是字符串的标示方法, 主要的正则表达式有sed.vim.awk,当然还包括grep正则表达式.前文我们已经介绍了Linux系统正则表达式的用法,今天就来着重介绍一下Linux系 ...

  7. linux grep 正则匹配字符串,Linux grep与正则表达式详解

    grep 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来,本文主要给大家分享Linux grep与正则表达式的相关知识,感兴趣的朋友一起看看吧,希望能帮助到大家. grep ...

  8. 正则表达式匹配linux时间,linux grep与正则表达式使用介绍

    grep (缩写来自Globally search a Regular Expression and Print)是一种强大的文本搜索工具,它能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹 ...

  9. php、linux、javascript 正则表达式

    PHP 正则表达式中包含三种元素分别为:量词.元字符.修饰符 量词 语法 描述 匹配任何至少包含一个前导字符串 匹配任何包含零个或多个前导字符串 ? 匹配任何包含零个或一个前导字符串 . 匹配任意字符 ...

最新文章

  1. 【数据挖掘】关联规则挖掘 Apriori 算法 ( 关联规则简介 | 数据集 与 事物 Transaction 概念 | 项 Item 概念 | 项集 Item Set | 频繁项集 | 示例解析 )
  2. java 反射 私有成员_Java对类私有变量的暴力反射技术讲解
  3. LogMiner学习笔记
  4. hplaserjet1022老提示打印错误,hp laserjet 1022 在win7上正确的安装步骤
  5. leetcode 77. 组合 思考分析
  6. java.lang.IllegalArgumentException: MALFORMED jar解析中文报错问题
  7. mysql+添加乱码_rsyslog+loganalyzer+mysql的IP添加与中文乱码解决
  8. Objective-C中小怪兽的逻辑
  9. Spark-TaskSchedule和TaskScheduleImpl解释和过程
  10. 前端emojs_Emoji-Chat emoji表情包发送及显示兼容web端、移动端
  11. (H2与HBase)面向行or面向列的存储模型?
  12. Python3网络爬虫:requests+mongodb+wordcloud 爬取豆瓣影评并生成词云
  13. 摄像机标定学习笔记(1)
  14. Microsoft Excel 教程:如何在 Excel 中筛选唯一值或删除重复值?
  15. 删除字符 (20分)
  16. 平生不会相思,才会相思,便害相思
  17. kermit使用总结
  18. 【Python】 网格策略回测(日内高频数据)
  19. 6.7.1 机器人系统仿真/URDF、Gazebo与Rviz综合运用/机器人运动控制以及里程计信息显示
  20. ec12编码器电路图_光电编码器电路图.DOC

热门文章

  1. 支持量子机器学习,王海峰发布最新百度飞桨全景图
  2. 2020年,5种将死的编程语言
  3. 买不到口罩怎么办?Python爬虫帮你时刻盯着自动下单!| 原力计划
  4. 2018最后一个月的Python热文Top10!赶紧学起来~
  5. 0.38秒!MIT 机器人还原3阶魔方的时间再破记录
  6. 【AAAI Oral】利用深度增强学习自动解数学题,准确率提升15%
  7. DeepMind科学家:AI对战《星际争霸》胜算几何?
  8. AI一分钟 | 阿里NLP技术连破两项世界纪录,玉泉一号AI试验卫星明年发射
  9. 多账号统一登录(实现方案)
  10. 我同事说我写代码像写诗