正则表达式(2)

news/2024/11/24 23:50:17/

文章目录

  • 正则表达式
    • 一.正则表达式
      • 1.含义
      • 2.通配符
        • 2.1通配符含义作用
        • 2.2常见的通配符
      • 3.元字符(字符匹配)
      • 4.表示次数
      • 5.位置锚定
      • 6.分组或其他
    • 二.扩展正则表达式
      • 1.表示次数
      • 2.举例

正则表达式

一.正则表达式

1.含义

(1)是一种特殊字符及文本字符所编写的模式,针对文本文件的内容

(2)主要用来匹配字符串(命令结果,文本内容)

2.通配符

2.1通配符含义作用

通配符只用于匹配文件名、目录名等,不能用于匹配文件内容。(而且是已存在的文件或者目录)

2.2常见的通配符

(1)*:通配符,匹配任意一个或多个字符

ls *.txt

在这里插入图片描述

(2)?:通配符,只能匹配任意一个字符

ls ?.txt

在这里插入图片描述

(3)[ ] 通配符,匹配list中任意单个字符

ls [a-z].txt

在这里插入图片描述

3.元字符(字符匹配)

常用元字符
. 匹配任意单个字符,可以是一个汉字
() 使用转义符,只表示()
[] 匹配指定范围内的任意单个字符
[^] 匹配指定范围外的任意单个字符(取反)
[[:space:]]:匹配空格

示例:

ls /opt/ | grep "[^A-Z]"——————————不要大写字符的文本内容
ls /opt/ | grep "[0-9].txt"—————————取含有0-9字符的txt文件名

在这里插入图片描述

ls /opt/ | grep "[a-zA-Z]"——————————匹配大小写英文字符
ls /opt/ | grep "[a-z0-9]"——————————同时匹配字符和数字
ls /opt/ | grep "[zj]"——————————————匹配zj任意的两个字符

4.表示次数

常用的表示
* #匹配前面的字符任意次,包括0次,贪婪模式:尽可能长的匹配
.* #任意长度的任意字符,不包括0次,也就是匹配所有
? #匹配其前面的字符出现0次或1次,即:可有可无
+ #匹配其前面的字符出现最少1次,即:肯定有且 >=1 次
{n} #匹配前面的字符=n次
{m,n} #匹配前面的字符至少m次,至多n次
{,n} #匹配前面的字符至多n次,<=n
{n,} #匹配前面的字符至少n次

示例:

echo google | grep 'go\{2\}gle'———————代表前面的o连续出现2次
echo gooooooogle | grep 'go\{2,\}gle'———————代表前面的o出现2次以上
echo goooogle | grep 'go\{2,5\}gle'——————代表前面的o出现2次以上5次以下
echo golgole | grep “\(go\)\{1\}”————————不连续的go

在这里插入图片描述

ifconfig ens33 | grep -o "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+"————————————匹配IP地址过滤出所有结果

在这里插入图片描述

echo 54456567@qq.com | grep "[0-9]\+@qq\.[a-z]\+"————匹配邮箱号

在这里插入图片描述

5.位置锚定

常用
^ #行首错定,用于模式的最左侧
$ #行尾错定,用于模式的最右侧
^root$ #用于模式匹配整行 (单独一行 只有root )
~$ #空行
1*$ #空白行
\<或 \b       #词首错定,用于单词模式的左侧(连续的数字,字母,下划线都算单词内部)
\>或\b         #词尾错定,用于单词模式的石侧
\<root\>      #匹配敷个单词
cat /etc/fstab | grep -v "#" |grep -v "^$"————过滤出文字不包含#号行的

在这里插入图片描述

单词模式

echo hello-123 | grep "\bhello"
echo hello-123 | grep "\b123"

在这里插入图片描述

6.分组或其他

分组:()将多个字符捆绑在一起,当作一个整体处理

或者:\|
echo hello-123 | grep "\bhello"
echo hello-123 | grep "\b123"
echo abccc | grep "abc\{3\}"
echo abcabcabc | grep "\(abc\)\{3\}"
echo golgogle | grep "\(go\)\{1\}"
echo golgogle | grep "\(go\)\{1\}gle"

在这里插入图片描述

二.扩展正则表达式

grep -E或者egrep

1.表示次数

字符
* #匹配前面字符任意次
? #0或1次
+ #1次或多次
{n} # 匹配n次
{m,n} #至少m,至多n次
{,n} #匹配前面的字符至多n次,<=n,n可以为0
{n , } #匹配前面的字符至少n次,<-n,n可以为0

2.举例

将ifconfig ens33 的地址显示出来

ifconfig ens33 | grep -E -o "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+"                 

在这里插入图片描述

将文本中的的区号展示出来

cat 888.txt | grep -E "[0-9]{,4}-[0-9]{,8}"

在这里插入图片描述

将电话号码展示(11位)

cat dhhm.txt | grep -E "[0-9]{,11}"

在这里插入图片描述

将不同的地址展示

cat kz.txt | grep -E "[0-9a-zA-Z]+@[0-9a-z]+\.[a-z]{,3}"

在这里插入图片描述

不同类型的区号展示

cat lz.txt | grep -E "(\([0-9]+\)|[0-9]+)[ -]?[0-9]+[ -]?[0-9]+"

在这里插入图片描述


  1. [:space:] ↩︎


http://www.ppmy.cn/news/495206.html

相关文章

自动打印照片是如何实现的

国庆假期即将来临&#xff0c;大家都会选择在这个假期去各个景区&#xff0c;乐园等游玩。很多景区现在都有那种拍照服务&#xff0c;就是在游客游玩一些项目或者不太方便自己拍照的时候&#xff0c;景区会拍下每个游客的精彩瞬间&#xff0c;然后会打印出来&#xff0c;最后在…

打印机怎么连接电脑?您只需要这样做!

案例&#xff1a;如何连接打印机和电脑&#xff1f; “今天我想打印一份文件&#xff0c;但是我对电脑不太熟悉&#xff0c;操作了很久都没有解决问题。有人知道打印机怎么连接电脑打印吗&#xff1f;可以教教我嘛&#xff01;求求了&#xff01;” 我们经常需要使用打印机打…

打印机打印照片不完整_通过正确准备打印机来改善照片打印效果

打印机打印照片不完整 Whether your photo printer is new or has been collecting dust between the holidays, you’ve likely spent a few frustrating moments setting up the machine. But did you know proper setup can improve the quality of your prints? 无论您的照…

Gutenprint打印照片

这一个条普通的打印命令&#xff1a; gs -sDEVICEijs -sIjsServerijsgutenprint -dIjsUseOutputFD -sDeviceManufacturer"Canon" -sDeviceModel"bjc-MULTIPASS-MX420" -r600x600 -dNOPAUSE -dSAFER -sOutputFile"/dev/usb/lp0" /system/usr/shar…

Golang每日一练(leetDay0101) 最长递增子序列I\II\个数

目录 300. 最长递增子序列 Longest Increasing Subsequence &#x1f31f;&#x1f31f; 2407. 最长递增子序列 II Longest Increasing Subsequence ii &#x1f31f;&#x1f31f;&#x1f31f; 673. 最长递增子序列的个数 Number of Longest Increasing Subsequence &a…

普通相片打印纸如何长时间保存

因为现在普通彩色相片打印纸非常便宜&#xff0c;彩色打印机也很普及&#xff0c;我们经常把孩子的旅游的照片打印出来放在书桌上或者背景墙上面。但是没有覆膜的相纸很容易褪色。而我压在透明桌布&#xff08;pvc桌布&#xff09;下面的却没有褪色。究其原因&#xff0c;是空气…

高通UFEI和MTK

高通在MSM8998上引入了UEFI&#xff0c;用来代替LK(Little Kernel)。 而高通UEFI由XBL和ABL两部分组成。 XBL是平台相关的&#xff08;主要是一些驱动程序&#xff0c;提供通用接口&#xff09;&#xff1b;ABL是平台不相关的通用程序&#xff08;通常是fastboot和bootloader…

ar9285无线网卡驱动 linux,Qualcomm

Qualcomm Atheros AR1xxx/AR2xxx/AR5xxx/AR9xxx系列无线网卡驱动10.0.0.313 WHQL版For Win7-32/Win7-64/Win8-32/Win8-64/Win8.1-32/Win8.1-64(2014年5月4日发布)Atheros被Qualcomm高通收购后&#xff0c;基本上他的官网也没再更新驱动&#xff0c;目前Atheros的驱动都是由各个…