基础知识
元字符:含有特定含义的特殊字符。
REGEXP: Regular Expressions,是一种模式。通过使用元字符匹配文件中的字符或者字符串的
通配符: 是用来匹配文件名,不能用来匹配字符串(通配符只能用来匹配现有文件的,不能用来生成文件
正则表达式分类:
- 基本正则表达式:
- 扩展正则表达式:
基本正则表达式:需要加转义字符\ grep默认使用的就是基本正则表达式
扩展正则表达式:更简洁,书写的时候可以不加转义字符(\)
了 。如:? + {n}等
正则表达式基本元字符:
第一类:字符匹配
- 点(.)
- 中括号:[]
点(.) #单个任意字符(类似于通配符的 ?)
中括号 [] #表示其中的任意一个
里面匹配出来的是纯小写或大写字符,不像通配符一样有小写有大写
也支持通配符的写法 #例如表示小写字母: [[: lower :]]
中括号里面放什么东西就是表示本身的含义 #比如: [.] -- 表示的就是点(.),不表示单个字符的意思
[^] --- 除括号中指定字符外的任意一个字符
第二类:次数匹配:
描述一个字符出现多少次
- \
- 星号(*)
-
\?
-
\
\{num\} #前一个字符出现num次
#需要加转移字符(\)
表示前一个字符出现的次数:\{ num \}
表示一个区间范围:\{n1,n2\}
* #前一个字符出现任意次
#通配符表示的是任意长度的字符
#贪婪模式: 能匹配的都匹配出来
#点星(.*):表示任意多个字符
\? #前面字符出现一次或者零次
#因为通配符的?是一个字符的意思,通配符是shell的,运行的程序又是shell的子进程,所以加个转义字符。过了shell后就变成了? ,然后再给程序使用。
#懒惰模式: 尽可能少匹配
\+ #前面的字符出现一次以上
第三类:位置锚定
- 脱字符(^)
- 美元符($)
^ #脱字符,表示整行的行首(行首锚定)
行首后面跟个字符串 表示以这个字符串作为开头的行
写在中括号里面的脱字符表示排除的意思 [^xx]
$ #整行的行尾(行尾锚定)
#例如:string $ --- 以指定字符结尾的行
#^str$ ---- 只包含str字符串的行(^$ --- 表示空行)
单词匹配:
linux中 字母、数字、下划算都算单词
,其他的就是单词的分界符
#连续的 字母、数字、下划线 才算单词
\< 或 \b #单词的词首
\> 或 \b #单词的词尾
\< str \> #整个单词
第四类:分组和其他功能
- 分组
- 或
分组:使用小括号括起来形成一个整体,后面需要调用分组的时候用\num #num表的第几个分组
形成一个整体: \( \)
例如: abc出现三次 \(abc\)\{3\}
或:| :使用的时候要加转义字符 \ #实现二选一的效果
正则表达式扩展元字符:
扩展元字符不使用斜杠进行转义。
[En]
Extended metacharacters are escaped without slashes.
基本正则表达式不加转义字符(\)。比如次数匹配类、单词匹配和分组的元字符。
例如:{}、()、?、+、|、<、>、b
</、>
支持正则表达式的工具:
grep、sed、awk、vim编辑器
范例:获取IP地址
ifconfig ens33 | grep -i inet | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | head -1
#简化:
ifconfig ens33 | grep -i inet | grep -o '\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}' | head -1
Original: https://www.cnblogs.com/heyongshen/p/16376780.html
Author: 背对背依靠
Title: 正则表达式(REGEXP)
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/523377/
转载文章受原作者版权保护。转载请注明原作者出处!