linux中的正则表达式知识梳理
1. 正则表达式
1.1 正则表达式使用
正则表达式是开发者为了处理大量的字符串和文本而定义的一套规则和方法,使用正则表达式可以提高效率,快速获取想要的内容.
正则表达式常用于linux三剑客grep,sed,awk,用来处理文本数据,也适用于普通命令.
三剑客中使用正则表达式处理文本时,是以行为单位的.
1.2 基本的正则表达式及扩展的正则表达式
正则表达式及扩展的正则表达式及其含义,如下表:
| ######字符匹配(仅仅匹配单个字符) | |
| . | 匹配任意单个字符(通配符的 ? 代表单个字符) |
| [abc] | 匹配集合内任意单个字符 |
| [^abc] | 匹配集合外的任意单个字符(非,正则表达式不支持!,!会被当做一个字符) |
| .* | 匹配任意长度的任意字符,即匹配所有内容 |
| ######匹配次数(仅仅是次数,不是表示字符) | |
| *t |
匹配t前一个字符任意次(连续出现多少次的意思,前面的字符可以没有, 匹配0次,即空,则匹配了所有内容) |
| \?t | 匹配t前一个字符0次或1次(至多1次,前面的字符可有可无),反斜线是转义 |
| \+t | 匹配t前面的字符至少1次(1次或多次),反斜线是转义 |
| a\{m\}t | 匹配t前一个字符a,m次(具体的次数),反斜线是转义 |
| a\{m,n\}t | 匹配t前一个字符a至少m次,至多n次,反斜线是转义 |
| a\{0,n\}t | 匹配t前一个字符a至多n次,可以没有,0可以省略不写,反斜线是转义 |
| a\{1,n\}t | 匹配t前一个字符a至少1次,至多n次,反斜线是转义 |
| a\{m,\}t | 匹配t前一个字符a至少m次,多则不限制,反斜线是转义 |
| ######位置锚定 | |
| ^ | 行首锚定 |
| $ | 行尾锚定 |
| ^PATTERN$ | 模式匹配整行(具体的字符串匹配整行) |
| ^$ | 匹配 空行 |
| [[:space:]]*$ | 匹配多个以空白结尾(空白可以没有)的行 |
| \< 或 \b | 词首锚定(单词模式的左侧,单词可以是字符串或者数字,不能是特殊符号) |
| \> 或 \b | 词尾锚定(单词模式的右侧,单词可以是字符串或者数字,不能是特殊符号) |
| \<PATTERN>\ | 匹配整个单词 |
| ######分组及引用 | |
| \(\) |
将一个或者多个字符捆绑在一起,当做一个整体来处理,如\(xy\)*匹配前面 的xy任意次 |
| \(ab\+\(xy\)*\) | \1: ab+\(xy\)* |
| \2: xy | |
1.3 重复1.2
###基本的正则表达式:
^ #<===用法 ^keyword,匹配以keyword开头的行
$ #<===用法 keyword$,匹配以keyword结尾的行
^$ #<===匹配空行
. #<===表示任意单个字符
\ #<===转义字符,还原字符原本的意思
* #<===匹配前一个字符0次或多次(前一个字符0次时,匹配所有内容)
.* #<===匹配所有内容
^.* #<===匹配以任意多个字符开头的内容
.*$ #<===匹配以任意多个字符结尾的内容
[abc] #<===匹配集合内任意单个字符
[^abc] #<===匹配集合外的任意单个字符
###扩展的正则表达式(使用egrep无需加\转义):
\+ #<===匹配前一个字符1次或1次以上(至少1次)
\[:/\]+ #<===匹配[]内:/(或其他特殊符号)的字符1次或1次以上(至少1次)
\? #<===匹配前一个字符0次或1次
| #<===同时过滤多个字符串,使用到的分隔符(在通配符中表示管道)
\(\) #<===括号中的内容被当做一个整体,可以被后面的 \n 引用(n为数字)
\n #<===引用 () 中的内容(n为数字)
a\{m,n\} #<===匹配前一个子符a至少m次,至多n次
a\{n,\} #<===匹配前一个字符a至少n次,多则不限
a\{n\} #<===匹配前一个字符n次
a\{,m\} #<===匹配前一个字符至多m次,可以没有
linux中的正则表达式知识梳理的更多相关文章
- Linux运维基础入门(四):Linux中的网络知识04
一,虚拟机的安装 略 二,Linux系统下的网络配置(Linux虚拟机的网络设定为桥接模式) 桥接模式:虚拟机同主机一样,在网络中相当于一个真实存在的装有Linux系统的电脑.(我们先用这个模式) N ...
- linux中的调试知识---基础gdb和strace查看系统调用信息,top性能分析,ps进程查看,内存分析工具
1 调试一般分为两种,可以通过在程序中插入打印语句.有点能够显示程序的动态过程,比较容易的检查出源程序中的有关信息.缺点就是效率比较低了,而且需要输入大量无关的数据. 2 借助相关的调试工具. 3 有 ...
- Linux中的正则表达式
* 前一个字符匹配0次或任意次. 匹配除了换行符外任意一个字符^ 匹配行首$ 匹配行尾[] ...
- linux中inode、软链接、硬链接
1 软链接 linux中软链接理解成window中的快捷方式.创建软链接的命令 ln -s 源文文件或目录 目标文件或目录 2 硬链接 创建硬链接的命令如下 ln 源文文件或目录 目标文件或目录 3 ...
- linux系统下的权限知识梳理
下面对linux系统下的有关权限操作命令进行了梳理总结,并配合简单实例进行说明.linux中除了常见的读(r).写(w).执行(x)权限以外,还有其他的一些特殊或隐藏权限,熟练掌握这些权限知识的使用, ...
- Linux基础知识梳理
Linux基础知识梳理 Linux内核最初只是由芬兰人林纳斯?托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的.Linux是一套免费使用和自由传播的类Unix操作系统,是 ...
- Linux实战教学笔记19:Linux相关网络知识梳理
第十九节 Linux相关网络知识梳理 标签(空格分隔): Linux实战教学笔记-陈思齐 一,前言 一个运维有时也要和网络打交道,所以具备最基本的网络知识,对一个运维人员来说是必要的.但,对于我们的工 ...
- linux中的通配符与正则表达式
在linux中,有通配符及正则表达式,那么什么是通配符和正则表达式,什么时候用? 通配符 它是由shell解析,并且一般用于匹配文件名,实际上就是shell解释器去解析的特殊符号,linux系统通 ...
- My way on Linux - 知识梳理计划
知识梳理计划图 近期计划把自己学习的工作中用到的Linux知识梳理下,敬请期待.
随机推荐
- Splash简单应用
jd->iphone import requests from lxml import etree # search_key = 'iphone' jd_url = "https:// ...
- 搞定SpringBoot多数据源(3):参数化变更源
目录 1. 引言 2. 参数化变更源说明 2.1 解决思路 2.2 流程说明 3. 实现参数化变更源 3.1 改造动态数据源 3.1.1 动态数据源添加功能 3.1.2 动态数据源配置 3.2 添加数 ...
- python super()函数:调用父类的构造方法
python子类会继承父类所有的类属性和类方法.严格来说,类的构造方法其实就是实例方法,因此,父类的构造方法,子类同样会继承. 我们知道,python是一门支持多继承的面向对象编程语言,如果子类继承的 ...
- 机器学习-MNIST数据集使用二分类
一.二分类训练MNIST数据集练习 %matplotlib inlineimport matplotlibimport numpy as npimport matplotlib.pyplot as p ...
- 看透Spring MVC:源代码分析与实践 (Web开发技术丛书)
第一篇 网站基础知识 第1章 网站架构及其演变过程2 1.1 软件的三大类型2 1.2 基础的结构并不简单3 1.3 架构演变的起点5 1.4 海量数据的解决方案5 1.4.1 缓存和页面静态化5 1 ...
- c#数字图像处理(八)图像平移
使图像沿水平方向和垂直方向移动 /// <summary> /// 图像平移 /// </summary> private void translation_Click(obj ...
- Jmeter之BeanShell断言使用
1.Bean Shell常用内置变量 JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下: log:用来记录日志文件,写入到j ...
- NOde.js的安装和简介
1.nodejs的安装 1.1 检测nodejs的版本 node -v (version:版本) 1.2 path配置nodejs 的环境变量(当前版本都是自动安装配置环境变量)指令: path 1. ...
- PTA 6-15 用单向循环链表实现猴子选大王 (20 分)
一群猴子要选新猴王.新猴王的选择方法是:让n只候选猴子围成一圈,从某位置起顺序编号为1~n号.每只猴子预先设定一个数(或称定数),用最后一只猴子的定数d,从第一只猴子开始报数,报到d的猴子即退出圈子: ...
- 通信协议之Modbus协议(一)
Modbus通信协议: 简介:Modbus协议是应用于电子控制器上的一种通用语言 通过此协议,控制器相互之间,控制器经由网络(例如以太网) 和其他设备之间可以通信,他已经成为一种通用工业标准,有啦它 ...