关于正则表达式第一篇

简介: 正则表达式在编程语言中,数据库中,linux中都有着广泛的应用,一说起正则表达式就有些高深晦涩的味道,正则表达式精炼而重要,在Linux中有着举足轻重的作用,也是学好sed,awk的一个基本门槛。
正则表达式在编程语言中,数据库中,linux中都有着广泛的应用,一说起正则表达式就有些高深晦涩的味道,正则表达式精炼而重要,在Linux中有着举足轻重的作用,也是学好sed,awk的一个基本门槛。
正则表达式是基于正则表达式引擎来实现的,引擎主要有以下两类。可能大家对这个比较陌生。
POSIX基本正则表达式引擎  BRE
POSIX扩展正则表达式引擎  ERE
大多数的Linux实现中都是BRE,也是默认的实现,还有扩展的实现就是ERE.
像grep,awk就支持基本和扩展的引擎,sed只支持基本引擎,也是基于性能的考虑。
学习awk相当于学习了一门新的编程语言,所以awk的功能很完善,扩展的引擎也支持了。
grep可以实现扩展的引擎,但是需要使用-E选项。

比如我们想查看一个字符bt,在b和t中间的字符可以出现0次或者1次。
bt,bat,bet等都是匹配的字符。

$ echo "bt" |grep 'b[ae]?t‘            --如果没有使用ERE就不会匹配到任何的数据


$ echo "bt" |grep -E 'b[ae]?t'     --启用了ERE之后,就可以正确匹配了。
bt

关于BRE,主要有以下的模式
纯文本
特殊字符
锚字符
点字符
字符组
排除字符组
使用区间
特殊字符组
星号


--纯文本

对于纯文本来说是大小写敏感的,空格和数字也可以正常匹配,胆识空格不需要转义
比如我们需要匹配 一个字符串出现this的情况,使用This和this就有很大的不同。
---使用sed来匹配
$ echo "This is a test"|sed -n '/This/p'
This is a test
echo "This is a test"|sed -n '/this/p'
$
--使用awk来匹配
$ echo "This is a test"|awk '/This/{print $0}'
This is a test

--使用grep来匹配
$ echo "This is a test"|grep ‘This'
This is a test
$ echo “This is a test”|grep -i ‘THis‘    --忽略大小写
This is a test

--特殊字符
以下的字符在正则表达式中会被视为特殊字符。
.*[]^$\+?|()
所以不能在文本中单独使用如上的特殊字符,需要加\做一个转义。
--sed来匹配字符\
echo "\ is a special character"|sed -n '/\\/p'
\ is a special character

--sed来匹配字符$,以下是几种测试的场景,可以对比一下输出结果。

$ echo "The price is $5.00"|sed -n '/$/p'
The price is .00
$ echo "The price is $5.00"|sed -n '/\s/p'
The price is .00

$ echo "The price is $5.00"
The price is .00
$ echo "The price is \$5.00"
The price is $5.00
$ echo 'The price is $5.00'
The price is $5.00
$ echo 'The price is $5.00'|sed -n '/\$/p'
The price is $5.00
echo "The price is $5.00"|sed -n '/\$/p'

对于字符/
$ echo "3 / 2"|sed -n '///p'
sed: -e expression #1, char 3: unknown command: `/‘
出这个错误是因为左斜线不是正则表达式的特殊字符的一部分,但是也需要转义,下面这样就没有问题了。
$ echo "3 / 2"|sed -n '/\//p'
3 / 2

后续部分在第二篇中继续分享。

目录
相关文章
|
SQL Java 数据管理
HiveServer2&beeline
HiveServer2&beeline
289 0
HiveServer2&beeline
|
JSON 前端开发 数据格式
【前端统计图】echarts实现简单柱状图
【前端统计图】echarts实现简单柱状图
275 0
|
8月前
|
机器学习/深度学习 人工智能 算法
智创 AI 新视界 -- 提升 AI 推理速度的高级方法(16 - 2)
本文深度聚焦提升 AI 推理速度,全面阐述模型压缩(低秩分解、参数量化)、硬件加速(GPU、TPU)及推理算法优化(剪枝感知推理、动态批处理)。结合图像识别等多领域案例与丰富代码示例,以生动形象且专业严谨的方式,为 AI 从业者提供极具价值的技术指南,助力突破 AI 推理速度瓶颈,实现系统性能跃升。
|
前端开发 JavaScript 测试技术
前端小白逆袭之路:如何快速掌握前端测试技术,确保代码质量无忧!
【10月更文挑战第30天】前端开发技术迭代迅速,新手如何快速掌握前端测试以确保代码质量?本文将介绍前端测试的基础知识,包括单元测试、集成测试和端到端测试,以及常用的测试工具如Jest、Mocha、Cypress等。通过实践和学习,你也能成为前端测试高手。
597 4
|
搜索推荐 前端开发 数据安全/隐私保护
改善用户体验方法
【10月更文挑战第9天】改善用户体验方法
1255 3
|
监控 NoSQL 算法
Redis Sentinel(哨兵)详解
Redis Sentinel(哨兵)详解
581 4
|
前端开发 芯片 网络架构
单口千兆以太网物理层芯片
一、基本介绍 YT8521S是一款单口千兆以太网物理层芯片,YT8521S是一款高度集成的以太网收发器,符合10BASE-Te、100BASE-TX和1000BASE-T IEEE 802.3标准。它提供了传输和接收所需的所有物理层功能通过CAT.5E UTP电缆的以太网数据包。 YT8521S采用最先进的DSP技术和模拟前端(AFE)实现高速数据通过UTP电缆进行传输和接收。交叉检测和自动校正、极性等功能校正、自适应均衡、串扰消除、回声消除、定时恢复和纠错在YT8521S中实现以提供10Mbps、100Mbps和100Mbps的鲁棒传输和接收能力,或1000Mbps。 MAC和PHY之
529 2
|
弹性计算 Linux 网络安全
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式:
2246 0
|
Java
深入理解Log4j工作原理
深入理解Log4j工作原理
430 0
|
Linux 测试技术
Linux系统调用三、read()函数和write()函数介绍
Linux系统调用三、read()函数和write()函数介绍
686 0
Linux系统调用三、read()函数和write()函数介绍