Linux 正则表达式

Linux Shell脚本之正则表达式 正则表达式RE 重要的文本处理工具:vim sed awk grep 1.什么是正则表达式? 正则表达式(regular expression,RE)是一种字符模式,用于在查找过程中匹配指定的字符。 在大多数程序里,正则表达式都被置于两个斜杠之间;例如/l[oO]ve/就是由正斜杠界定的正则表达式。 它将匹配被查找的行中任何位置出现的相同模式,在正则表达式中,元字符是重要的概念 匹配数字:1+$ ^:以xxx开头,+前面的对象出现一个或多个,$是以xxx结尾,[]里面的是匹配的模式 匹配mail:[a-z 阅读详情

一、基础知识

匹配操作符

  • \                                   转义字符
  • .                                   匹配任意单个字符
  • [1249a],[^12],[a-k]     字符序列单字符占位
  • ^                                   行首
  • $                                   行尾
  • \<,\>:\<abc                 单词首尾边界
  • |                                    连接操作符
  • (,)                                 选择操作符
  • \n                                  反向引用

重复操作符:

  • ?          匹配0到1次。
  • *          匹配0到多次。
  • +         匹配1到多次。
  • {n}       匹配n次。
  • {n,}      匹配n到多次。
  • {n,m}   匹配n到m次。

与扩展正则表达式的区别:grep basic

  • \?, \+, \{, \}, \|, \(, and \)

匹配任意字符

  • .*

二、测试数据1

vim data.txt
ooxx12121212ooxx
ooxx 12121212
oox 12121212
1212 ooxx 1212
oo3xx
oo4xx
ooWxx
oomxx
$ooxx
oo1234xx
ooxyzxx

1、包含"ooxx"的行

[root@server2 data]# grep "ooxx" data.txt 
ooxx12121212ooxx
ooxx 12121212
1212 ooxx 1212
$ooxx

2、包含数字的行

[root@server2 data]# grep "[0-9]" data.txt 
ooxx12121212ooxx
ooxx 12121212
oox 12121212
1212 ooxx 1212
oo3xx
oo4xx
oo1234xx

3、包含数字34的行

[root@server2 data]# grep "[34]" data.txt 
oo3xx
oo4xx
oo1234xx

4、包含4位整数的行

[root@server2 data]# grep "[0-9]{4}" data.txt 
[root@server2 data]# grep "[0-9]\{4\}" data.txt 
ooxx12121212ooxx
ooxx 12121212
oox 12121212
1212 ooxx 1212
oo1234xx
[root@server2 data]# grep -E "[0-9]{4}" data.txt 
ooxx12121212ooxx
ooxx 12121212
oox 12121212
1212 ooxx 1212
oo1234xx

5、包含"ooxx"单词的行

[root@server2 data]# grep "\<ooxx\>" data.txt 
ooxx 12121212
1212 ooxx 1212
$ooxx

6、包含4位数字(位数正好是4)的行

[root@server2 data]# grep "\(^[0-9]\|[^0-9][0-9]\)[0-9]\{2\}\([0-9]$\|[0-9][^0-9]\)" data.txt 
1212 ooxx 1212
oo1234xx

[root@server2 data]# grep -E "(^[0-9]|[^0-9][0-9])[0-9]{2}([0-9]$|[0-9][^0-9])" data.txt 
1212 ooxx 1212
oo1234xx

第一位两种情况,以数字开头或不以数字开头:(^[0-9]|[^0-9][0-9])

中间2位是数字:[0-9]{2}

最后一位,以数字结尾或不以数字结尾:([0-9]$|[0-9][^0-9])

另一种实现方式:

[root@server2 data]# grep -E  "^[0-9]{4}[^0-9]|[^0-9][0-9]{4}[^0-9]|[^0-9][0-9]{4}$|^[0-9]{4}$" data.txt 
1212 ooxx 1212
oo1234xx

把4位数字出现的情况全都列举出来

三、测试数据2

aaabbcaaa
aa bbc aaa
bb bbc bbb
asgodssgoodsssagodssgood
asgodssgoodsssagoodssgod
sdlkjflskdjf3slkdjfdksl
slkdjf2lskdjfkldsjl
[root@server2 data]# grep "a" test
aaabbcaaa
aa bbc aaa
asgodssgoodsssagodssgood
asgodssgoodsssagoodssgod
[root@server2 data]# grep  "a\{3\}"  test
aaabbcaaa
aa bbc aaa
[root@server2 data]# grep  "\<aaa"  test
aaabbcaaa
aa bbc aaa
[root@server2 data]# grep  "\<aaa\>"  test
aa bbc aaa
[root@server2 data]# grep "b" test
aaabbcaaa
aa bbc aaa
bb bbc bbb
[root@server2 data]# grep  "b\{2,3\}" test
aaabbcaaa
aa bbc aaa
bb bbc bbb
[root@server2 data]# grep ".*god.*good" test 
asgodssgoodsssagodssgood
asgodssgoodsssagoodssgod
[root@server2 data]# grep ".*good.*god" test 
asgodssgoodsssagodssgood
asgodssgoodsssagoodssgod
[root@server2 data]# grep ".*god.*good.*god.*good" test 
asgodssgoodsssagodssgood
[root@server2 data]# grep ".*god.*good.*good.*god" test 
asgodssgoodsssagoodssgod
[root@server2 data]# grep ".*\(god\).*\(good\).*\1.*\2" test 
asgodssgoodsssagodssgood
[root@server2 data]# grep ".*\(god\).*\(good\).*\2.*\1" test 
asgodssgoodsssagoodssgod

 

Java开发者必看:如何快速对接七大主流快递API(附完整代码示例) 本文为Java开发者提供了快速对接顺丰、京东、DHL等七大主流快递API的实战指南。文章深入剖析了不同API的认证、通信协议与参数差异,并提供了高可用的HTTP客户端配置、通用签名工具、SOAP请求处理以及可扩展的领域模型与适配层设计等完整代码示例,帮助开发者构建统一、健壮的物流集成框架,显著提升开发效率。 阅读详情

相关推荐

【ubuntu】如何搭建AFTR+B4环境

为何要使用ipv6 目前ipv4地址已经不够用了,而IPv6采用128位地址长度,几乎可以不受限制地提供地址。而且ipv6具有更高的安全性。 主流的ipv6方案 1.双栈方案 :所有设备同时支持IPv4/IPv6协议栈,核心理念在于其传送网同时支持IPv4和IPv6 2.DS-Lite方案 :IPv4‐in‐IPv6 隧道和 NAT 这两个基本技术,同时支持IPV4与IPV6,对于ipv4用户,可以通过ipv6隧道与ipv4业务平台实现通信;针对ipv6用户,可直接通过ipv6网络通信。 3.6RD方案 :

weixin_43863426的博客 2721

linux-正则表达式介绍

一、正则表达式 1.1、字符匹配 [root@localhost /home/unnet/data]#grep "r..t" /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin do...

进修的CODER 409

自动驾驶仿真(五)—— 基于Carsim、Prescan、Simulink的联合仿真

自动驾驶仿真五——基于Carsim、Prescan、Simulink的联合仿真1. 联合仿真流程2. CarSim联合仿真配置要点3. Prescan联合仿真配置要点4. Carsim、Prescan、Simulink联合仿真结果5. 参考学习的书目教材 博主前面的博文已经介绍了Carsim和Prescan各自与Matlab/Simulink的相关联合仿真应用实例,并且论述过几款软件各自的优势及用法,CarSim适合动力学模型的建立,PreScan适合行车场景的搭建,Simulink适合控制算法的设计及信号

zhudj08的博客 1万+

linux正则表达式

. 一个字符 … 两个字符 .* 至少一个 ^ 开头 $ 结束 [abc] 包含a或b或c的都匹配 ,匹配单个字符 [^abc] 只要出现了abc这三个字母以外的字符就都匹配,排除 1 以a开头或以b开头或以c开头 [abc] 不以a开头或不以b开头或不以c开头 a+ 匹配至少一个或多个a a* 匹配0或多个a 大写 [[:upper:]] [A-Z] 小写 [[:l...

liutao261311的博客 3162

绕过Google Play:获取Expo Go安卓APK的实用指南

本文为国内安卓开发者提供了绕过Google Play商店获取Expo Go APK的实用指南。针对无法访问Google Play的痛点,详细介绍了通过官方GitHub Releases、可信第三方网站(如APKMirror)及APK下载器等多种安全获取途径,并重点讲解了APK安装、安全验证(核对签名)及常见连接问题的排查方法,帮助开发者顺利开启React Native开发之旅。

weixin_29006701的博客 577

Pandas实战指南:从数据结构到清洗聚合的完整解析

在数据分析工作中,表格数据处理是最常见的需求,无论是电商运营还是量化交易,都离不开对结构化数据的清洗与转换。Python生态中,Pandas凭借Series与DataFrame两种核心数据结构,将数据标签与数值绑定,实现自动对齐,极大简化了数据操作流程。它不仅是数据清洗的利器,也是分组聚合、透视表分析和时间序列处理的基础工具。掌握Pandas,意味着能够高效完成从数据读取、缺失值处理、类型转换到分组统计的完整分析流水线,将重复性报表工作自动化。本文基于实际使用经验,系统梳理Pandas的核心概念、常用操作、

weixin_30768881的博客 257

Linux - 正则表达式

目录1. 正则表达式(regular expression)1.1 元字符1.1.1 ^ 表示以什么开头1.1.2 $ 表示以什么结尾1.1.3 " . "表示任意单个字符1.1.4 *表示前面的字符出现0次或者任意次 .*表示所有的字符1.1.5 |表示或者1.1.6 ^$ 表示空行1.1.7 +表示前面字符出现1次以上1.2 方括号表达式1.2.1 [abc] 表示 a,b,c任意一个 1.2.2 [a-z] 表示小写字母1.2.3 [A-Z] 表示大写字母 1.2.4 [0-Z

qq_48391148的博客 9650

Linux:正则表达式

正则表达式又称为正规表达式、常规表达式、在代码中常简写为regex、regex或RE。正则表达式是使用单个字符串来描述、匹配一系列符合某个句法规则的字符串,简单来说,是一种匹配字符串的方法,通过一些特殊符号,实现快速查找、删除、替换某个特定的字符串。这里不得不提的是shell三剑客:grep,sed,awk。............

qq_57377057的博客 1万+

[QMT和ptrade量化交易小白入门]-125、菜场大妈加上四大现金行业指数风控,最大回撤从22%减少了一半

群里面有人建议,在菜场大妈策略的基础上,加入申万的行业指数(银行,钢铁,有色,煤炭)测算其宽度,当这四大行业其中有一个高就会清仓(用来控制回撤)。这背后的逻辑是,在存量资金博弈的市场环境中,资金总量相对固定,当银行、钢铁、有色、煤炭等大市值周期行业因基本面改善(如涨价、政策催化)或避险需求而走强时,会吸引大量资金涌入,导致其他板块(尤其是小市值股票)面临流动性虹吸。经过回测,对比上一个版本发现确实是可以降低一半的回撤,最大回撤从22.3%降到了11.4%,而且有很多时间是空仓等待。

木头大左的博客 237

基于BERTopic模型的英文20新闻数据集主题聚类及可视化

BERTopic是基于深度学习的一种主题建模方法。BERT是一种用于NLP的预训练策略,它成功地利用了句子的深层语义信息。

Cachel Wood的博客 1460

Linux 正则表达式的基础使用

正则表达式;基本正则元字符;扩展正则元字符;^;$;.;*;.*;[ ];[ - ];[^];\;\;\(\);=;!=;=~;+;?;|;();x{m};x{,m};x{m,};x{n,m};\s;\d

Sakura_QKS的博客 3491

Jetson Nano之CSI摄像头操作方法

jetson端csi摄像头的应用方法

ZONGXP的博客 1万+

Linux 什么是正则表达式

正则表达式,是一个描述一组字符串的模式。它主要用来文本搜索和字符串处理,一个正则表达式匹配单个字符或一个字符串,或者字符串的一部分。 在计算机科学中,正则表达式是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索和替换那些符合某个模式的文本内容。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表

魔筝炼药师 1791

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Linux中的正则表达式

​ 2)高级功能:扩展正则表达式(ERE,extended regular expression)​ 1) 基本正则表达式(BRE,basic regular expression)POSIX规范将正则表达式的分为了两种。

sansheng__的博客 639

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Linux正则表达式详解

正则表达式: Regual Expression, REGEXP 由一类特殊字符及文本字符所编写的模式,其中有些字符不表示其字面意义,而是用于表示控制或通配的功能; 一、正则表达式的意义 处理大量的字符串 处理文本 通过特殊符号的辅助,可以让linux管理员快速过滤、替换、处理所需要的字符串、文本,让工作高效。 通常Linux运维工作都要面临大量带着字符串的内容, 如: 配置文件 程序代码 命令输出结果 日志文件 且此类字符串内容,我们常会有特定的需要,查找出符合工作需要的特定的字符串,因

向上的"狼"的博客 3150

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Linux正则表达式

什么是正则表达式 它是由一类特殊字符及文本字符所编写的模式,其中有些字符不表示其字面意义,而是用于表示控制或通配的功能

sr20020305的博客 401

正则表达式 linux shell

正则表达式 热身 正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。 例如 grep, expr, sed , awk. 或Vi中经常会使用到正则表达式,为了充分发挥 shell 编程的威力,需要精通正则表达式。 转载请标明:http://blog.youkuaiyun.com/y

ysdaniel的专栏 9万+

linux 扩展正则表达式

linux 扩展正则表达式在使用的时候配合 grep 命令 需要使用 grep -E 或者egrep 命令使用,0* 0次 没有 grep会把文件内容都显示出来。[oldboy]查找的内容是o l d b o y 而不是oldboy整体。/etc/ssh/sshd_config 排除文件中的#和空。表示的信息0次或1次表示的内容和{0,1}其实是一样的。前一个符号连续出现0次或1次 有或没有。取出文件中的身份证号码。排除文件中的#和空行。

tian830937的专栏 1178

linux-正则表达式

http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html 1,shell通配符 注意,这里的通配符虽然和正则表达式相似,但是是基于bash解释器解析的,而正则表达式由正则引擎的软件(如awk,grep,sed等)解析,二者完全不同。 通配符字符

gexiaobaoHelloWorld的专栏 1万+

linux的正则表达式

:匹配前面的字符任意次包括0次,尽可能长的匹配.*:匹配前面的字符任意次,但是不包括0次。也就是匹配所有。:匹配前面的字符出现0次,或者1次。有且只有一次\ +:匹配前面出现的字符,至少出现一次,也就是>=1\ {n \ }:匹配前面出现的字符等于几次\ {m,n \ }:匹配前面出现的字符最少m次,最多是n次\ { ,n \ }:匹配前面的字符最多n次。没有也算\ {n, \ }:匹配前面的字符最少n次,只要连续出现n次,后面的都算。^:行首锚定。以什么为开头$:行尾锚定。以什么为结尾。

m0_75209491的博客 1770

linux查找固定开头y结尾的正则表达式_Linux正则表达式

一、基础正则表达式(一)基础字符列表正则表达式就是一套处理字符串的规则和方法。以行为单位对字符串进行处理,达到快速过滤或者替换字符串的目的。下面是正则表达式的特殊字符:(二)实例1、测试文件[root@localhost project]# cat test.txt I like code,book what do you like my friends like riding,movie2、测...

weixin_31119221的博客 1038
上一篇: Linux vi/vim 常用命令
下一篇: 【Java设计模式】代理模式
hellboy0621
博客等级 码龄9年 61粉丝 147原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值