当前位置: 首页 > news >正文

什么是正则表达式

正则表达式(Regular Expression,简称Regex

我们平时用的*(匹配任意字符)、?(匹配单个字符)是简单的通配符,而正则表达式是它的 “高级版”,能描述更复杂的规则:

查什么,元字符

扩展正则表达式

-E选项启用了 扩展正则表达式(ERE)

-P选项启用了 Perl 兼容正则表达式(PCRE),它支持更强大、更复杂的正则表达式功能,包括一些扩展的功能

#查找包含小写字母的行 grep -P "[a-z]" data.txt
#匹配包含ERROR关键字的行 grep -P "ERROR" data.txt

例子,提取邮件地址

emile.txt

valid.email@example.com​ another.email@domain.org​ invalid-email.com​ yet.another.email@sub.domain.co.uk​ 123@numbers.com​ missingatsign.com​ email@valid-domain.com​ not_a_valid_email@com

邮箱的通用结构是:用户名@域名

  • 用户名:字母、数字、下划线、点、减号
  • @:必须有且只有一个
  • 域名:包含.,不能只有后缀(比如不能是com,必须是example.com
grep -P '\w+[.\w-]*@[.\w-]+\.\w+' emile.txt
  • \w+:用户名开头,字母数字下划线
  • [.\w-]*:用户名里可以有.-,任意次数
  • @:必须匹配@
  • [.\w-]+:域名部分(比如examplesub.domain
  • \.\w+:域名后缀(比如.com.co.uk

查多少,匹配符

例子,从日志文件中提取所有包含 IP 地址的行。IP 地址是数字和点号的组合,类似 192.168.0.1

access.log

LNMP => Nginx => PHP(故障) => 500 LNMT => Nginx => Tomcat(故障) => 500 192.168.1.1 - - [07/Jan/2025:12:45:32 +0000] "GET /index.html HTTP/1.1" 200 1024​ 172.16.0.2 - - [07/Jan/2025:12:46:15 +0000] "POST /login HTTP/1.1" 403 2048​ 192.168.2.3 - - [07/Jan/2025:12:47:22 +0000] "GET /about.html HTTP/1.1" 200 1024​ 10.0.0.4 - - [07/Jan/2025:12:48:44 +0000] "GET /contact.html HTTP/1.1" 404 512​ invalid_ip - - [07/Jan/2025:12:49:55 +0000] "GET /invalid HTTP/1.1" 400 0
grep -P "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}" access.log

\d{1,3} 匹配 1 到 3 个连续数字,比如1192255

\. 匹配一个真实的小数点.,用来分隔 IP 的四段数字

从哪查,定位符

检查 /etc/passwd 文件中是否有用户账户的名称以特定字符(如 "user")开头

grep -P "^user" /etc/passwd

去除配置文件中的注释以及空行

grep -vP "^#|^$" nginx.conf

-v:取反

^$:空行

|:或者

分组、捕获、反向引用

作用:主要是进行重复数据的匹配操作

举个栗子:1234-1111-1221-3333

要求:要求使用正则匹配1111以及3333这种格式的数字

要求:要求使用正则匹配1221这种格式的数字

☆ 分组

在正则表达式中,通过一对圆括号括起来的内容,我们就称之为"分组"。

\d(\d)(\d)

正则表达式中\d\d\d中,(\d)(\d)就是子表达式,一共有两个()圆括号,则代表两个分组

☆ 捕获

当正则表达式在字符串中匹配到相应的内容后,计算机系统会自动把分组所匹配的到内容放入到系统的对应缓存区中(缓存区从$1开始)

反向引用

在正则表达式中,我们可以通过\n(n代表第n个缓存区的编号)来引用缓存区中的内容,我们把这个过程就称之为"反向引用"。

① 查找连续的四个数字,如:3569

grep -P "[0-9]{4}"

② 查找连续的相同的四个数字,如:1111

echo "1111" | grep -P "([0-9])\1\1\1"

③ 查找数字,如:1221,3443

echo "1221,3443" | grep -P "([0-9])([0-9])\2\1"

④ 查找字符,如:AABB,TTMM(提示:A-Z,正则:[A-Z])

cho "AABB,TTMM" | grep -P "([A-Z])\1([A-Z])\2"

⑤ 查找连续相同的四个数字或四个字符(提示:\w)

echo "1111" | grep -P "(\w)\1{3}"​ echo "aaaa" |grep -P "([a-zA-Z0-9_])\1{3}"

例子1,从日志中提取特定 IP 地址

场景:在 Web 服务器日志中定位所有来自特定 IP 地址(如 192.168.1.10)的请求,以分析某个用户的访问情况。

192.168.1.10 - - [07/Jan/2025:12:45:32 +0000] "GET /index.html HTTP/1.1" 200 1024 172.16.0.2 - - [07/Jan/2025:12:46:15 +0000] "POST /login HTTP/1.1" 403 2048 192.168.2.3 - - [07/Jan/2025:12:47:22 +0000] "GET /about.html HTTP/1.1" 200 1024 10.0.0.4 - - [07/Jan/2025:12:48:44 +0000] "GET /contact.html HTTP/1.1" 404 512 invalid_ip - - [07/Jan/2025:12:49:55 +0000] "GET /invalid HTTP/1.1" 400 0 grep -P "192\.168\.1\.10" access.log
grep -P "192\.168\.1\.10" test.txt

在正则表达式中,.特殊符号,它默认表示「匹配任意单个字符」。

  • 比如正则192.168会匹配:192x168192A168192.168等所有 “192 + 任意字符 + 168” 的字符串,这不是我们想要的。
  • 所以要在.前面加转义符\,把它变成字面意义的小数点.,这样就只会匹配192.168.1.10本身。
http://www.zskr.cn/news/1501677.html

相关文章:

  • 计算机毕业设计之基于Hadoop的美食推荐的分析系统
  • Gerbv开源工具:3分钟掌握PCB设计文件验证的核心技能
  • 2026年靠谱的临猗女装代理/女装/女装拿货加盟品牌推荐 - 行业平台推荐
  • Python 虚拟环境全攻略:从创建到升级,一文带你掌握!
  • 航空试飞大模型人工智能AI系统平台软件设计方案
  • 从序列检测器到状态机:用FPGA(Cyclone IV)重新理解数字逻辑设计
  • 如何在5分钟内搭建高精度人脸检测系统:YOLOv5-Face实战指南
  • 2026年评价高的宜宾毛坯房装修/宜宾全包装修/宜宾老房翻新装修品牌公司推荐 - 行业平台推荐
  • BootstrapVue Next实战指南:5个关键技巧快速构建现代化Vue 3应用
  • 2026年呼和浩特托盘厂家推荐榜单:塑料托盘/木质托盘/钢制托盘/重型/轻型/川字田字托盘及冷库防静电可堆叠托盘精选推荐 - 品牌发掘
  • 2026年评价高的加工/昆山五轴零件加工/金属零件加工口碑好的厂家推荐 - 行业平台推荐
  • Navicat无限试用终极指南:三步实现Mac版Navicat16/17永久免费使用
  • 12503华夏之光永存:黄大年茶思屋榜文125期 第3题 面向语义和情感认知的语音encoder技术
  • 2026年靠谱的长春芳纶纸蜂窝吸波材料/长春芳纶纸蜂窝芯厂家推荐与选型指南 - 行业平台推荐
  • 内网IM首选!BeeWorks让零基础团队轻松实现完全私有化部署
  • K-Means 聚类详解:算法原理 + 迭代过程图解 + C++ 实现 + 如何选 K(肘部法则)
  • 2026年靠谱的机器人零件加工/昆山五轴零件加工多家厂家对比分析 - 品牌宣传支持者
  • 2026年知名的贵州发酵饲料/贵州富硒肉/贵州富硒饲料厂家推荐与选型指南 - 行业平台推荐
  • 数据的加密与解密(04:05)
  • 误删照片怎么办?用PhotoRec数据恢复工具找回珍贵记忆
  • 萧山优秀的杭州喷涂设备:杭州及周边喷涂加工企业能力分析与行业指南 - 优质品牌商家
  • GetQzonehistory:3步轻松备份你的QQ空间青春记忆
  • 2026年热门的拆除食品设备/二手食品设备/转让食品设备/出售食品设备长期合作厂家推荐 - 品牌宣传支持者
  • 2026泰州老地面翻新公司排行榜及选择参考 - 品牌排行榜
  • 四川排水管道非开挖修复公司电话与技术服务评测:哪家更可靠? - 优质品牌商家
  • 2026年沈阳家具油漆品牌TOP榜单:环保净味、高硬度耐磨与水性漆厂家深度推荐 - 品牌发掘
  • MC68HC908SR12嵌入式开发:LVI与BRK模块的硬件级可靠性与调试实战
  • 2026年银川工伤律师推荐指南:从工伤认定到赔偿全程维权 - 本地品牌推荐
  • 学术论文写作哪个AI好?豆包、DeepSeek深度对比
  • 从风场到水流:手把手教你用ol-wind插件自定义GeoJSON数据源