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

【Linux】正则表达式学习记录

正则表达式

  • 正则表达式
    • 位置标记
    • 标识符
    • 数量修饰符
    • 捕获元和非捕获元, 用于操作某个匹配中的一部分内容
    • 其他
    • 正则式用例
  • 扩展正则表达式


正则表达式

位置标记

  • ^ (匹配行首)
  • $ (匹配行尾)

标识符

  • . (匹配任意字符)
  • [] (匹配中括号内的任意单个字符)
  • [^] (不匹配中括号内的任意单个字符)

数量修饰符

  • ? (匹配0或1次)
  • + (匹配1或多次)
  • * (匹配0或多次)
  • {n} (匹配之前的项n次)
  • {n,} (至少匹配之前的项n次)
  • {n,m} (至少匹配之前的项n次,至多匹配m次)

捕获元和非捕获元, 用于操作某个匹配中的一部分内容

  • () (捕获括号内的内容并缓存,通过$0-$9来进行调用)
  • (?:\) (非捕获元)
  • (?=) (匹配后边等于xxx的XXX)
  • (?<=) (匹配前边等于xxx的XXX)
  • (?!) (匹配后边不等于xxx的XXX)
  • (?<!) (匹配前边不等于xxx的XXX)

其他

  • () (将括号中的内容视为一个整体)
  • | (选择结构,可以匹配两边的任意一项(A|a), 不是所有语言的正则都支持该符号)
  • \ (转义字符,转义之后的一个字符)

正则式用例

( +[a-zA-Z]+[?,.]? +)                                   # 匹配任意单词
[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}          # 匹配IP地址,仅匹配,不检查合法性
[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}    # 匹配IP地址,仅匹配,不检查合法性
(?:[Ww]indows).*        # 用于匹配任何windows型号中的"Windows"字符串
hello(?= world)         # 用于匹配后面是world单词的hello字符串
(?<=hello )world        # 用于匹配前面是hello单词的world字符串
hello(?! world)         # 用于匹配后面不是world单词的hello字符串
(?<!hello )world        # 用于匹配前面不是hello单词的world字符串^\s*(?=\r?$)\n          # 匹配空行
  • 正则式引擎通常会选择最长匹配。
  • 可以匹配的文本,可以是管道的输出文件、或者命令行输入的字符串
  • 可视化正则表达式

扩展正则表达式

  1. grep 要加-P选项。
  2. Perl正则支持。要开启扩展正则表达式支持。
  • \d (等价于[0-9], 匹配数字)
  • \D (等价于[^0-9], 不匹配数字)
  • \b (匹配单词边界, 指单词和空格的位置)
  • \B (不匹配单词边界)
  • \s (匹配任何不可见字符,包括空格符、制表符、换页符等。等价于[\f\n\r\t\v])
  • \S (匹配任何可见字符。等价于[^\f\n\r\t\v])
  • \w (匹配包括下划线的任何单词字符。Unicode字符。)
  • \W (匹配任何非单词字符。)
  • \f (换页符, \x0C和\cL)
  • \n (换行符, \x0A和\cJ)
  • \r (回车符, \x0D和\cM)
  • \t (制表符, \x09和\cI) TODO:不确定是\cI还是\cl
  • \v (垂直制表符, \x0B和\cK)
  • \c[A-Za-z] (匹配一个控制字符)
  • \x[0-9A-F]{2} (匹配一个十六进制值,必须是两个数字长,0x00-0xFF)
  • \u[0-9A-F]{4} (匹配一个十六进制值,必须是4个数字长,0x0000-0xFFFF,Unicode字符)

\u00A9匹配版权符号

  • \n[0-7]+ (匹配一个八进制值)
  • \[1-9] (对获取匹配(xxx)的引用,如:"(.)\1"匹配两个连续相同的字符, 只有一条反斜杠,写两条是因为Markdown预览器做了转义)
  • \p[PLMZSNC] (匹配Unicode属性)
  • < (匹配单词的开始)
  • > (匹配单词的结束)

<the>可以匹配"on the table"中的"the",但是无法匹配"otherwise"中的"the"。

http://www.dtcms.com/a/353653.html

相关文章:

  • FFMPEG api使用
  • 从disable_cost到disabled_nodes,最小代价预估质的飞跃
  • nestjs日志(nest-winston)
  • pyecharts可视化图表-tree:从入门到精通
  • Linux 系统调优与CPU-IO-网络内核参数调优
  • Task04: CAMEL框架中的多智能体系统(课程第三章剩余章节)
  • 大模型安全概述、LlamaFirewall
  • ESP8266:Arduino学习
  • 前端性能优化:从指标监控到全链路落地(2024最新实战指南)
  • 短视频矩阵管理软件推荐——小麦矩阵系统深度解析
  • 关于两视图相机几何关系
  • DevExpress WPF中文教程:如何将WPF数据网格绑定到本地集合?
  • 软件定义汽车(SDV)调试——如何做到 适配软件定义汽车(SDV)?(下)
  • vue新能源汽车销售平台的设计与实现(代码+数据库+LW)
  • 【Vue2✨】 Vue2 入门之旅(二):模板语法
  • Python异步编程:从理论到实战的完整指南
  • Qt---项目架构解读
  • BiLSTM-Attention分类预测+SHAP分析+特征依赖图!深度学习可解释分析,Matlab代码实现
  • 【GaussDB】深度解析:创建存储过程卡死且无法Kill会话的疑难排查
  • codeforces(1045)(div2)D. Sliding Tree
  • 装饰器模式(C++python)
  • 第十四章 Leaflet-Ant-Path 实现西气东输管线动态流向可视化
  • 源代码接入 1688 接口的详细指南
  • 【生产事故处理--kafka日志策略保留】
  • antv x6实现封装拖拽流程图配置(适用于工单流程、审批流程应用场景)
  • 使用Stone 3D快速制作第一人称视角在线小游戏
  • STM32八大模式
  • Yapi接口文档导出测试用例至Excel中
  • ProfiNet 转 Ethernet/IP西门子 S7-400 及罗克韦尔 PLC 于原油蒸馏的集成应用
  • 插入排序讲解