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

第4.3节:awk正则表达式详解-特殊字符

1 第4.3节:正则表达式详解-特殊字符

  除了普通字符和转义字符外,正则表达式中还有类特殊字符,可以对正则表达式的行为进行修饰,下表是一些常用的正则表达式特殊字符及含义:

字符说明
^匹配输入字符串的开始位置。要匹配 “^” 字符本身,请使用 “\^”
$匹配输入字符串的结尾位置。要匹配 “$” 字符本身,请使用 “\$”
( )标记一个子表达式的开始和结束位置。要匹配小括号,请使用 “\(” 和 “\)”
[…]用来自定义能够匹配 ‘多种字符’ 的表达式,[]中的…表示用户自定义字符。要匹配中括号,请使用 “\[” 和 “\]”
[^…]这是一个否定逻辑,匹配任何字符但除了这里[]中定义的字符。
{ }修饰匹配次数的符号。要匹配大括号,请使用 “\{” 和 “\}”
.匹配除了换行符(\n)以外的任意一个字符。要匹配小数点本身,请使用 “\.”
?修饰匹配次数为 0 次或 1 次。要匹配 “?” 字符本身,请使用 “\?”
+修饰匹配次数为至少 1 次。要匹配 “+” 字符本身,请使用 “\+”
*修饰匹配次数为 0 次或任意次。要匹配 “*” 字符本身,请使用 “\*”
|左右两边表达式之间 “或” 关系。匹配 "
  • 示例1:使用“^”筛选行首是数字的文本

文本样例:

sample
123
456
789abc
012345678
end

awk代码及运行结果:

$ awk '/^[[:digit:]]+/' sample1.txt
123
456
789abc
012345678
  • 示例2:使用“$”筛选整行都是数字的文本
      上述文本样例中,有部分行是数字+字符的,如果想筛选出全部是 数字的行,该如何处理呢?此时可以使用“^”和“$”来联合约束文本内容:

awk代码及运行结果:

$ awk '/^[[:digit:]]+$/' sample1.txt
123
456
012345678
  • 示例3:利用分组把数字文本行前加上TEL:前缀
      使用正则表达式时,很我场景是查找出符合条件的文本,将其整理成新的格式,此时就使用到了分组。

awk代码及运行结果:

$ awk '/^[[:digit:]]+$/{print gensub(/(.*)/, "TEL: \\1", "g")}' sample1.txt
TEL: 123
TEL: 456
TEL: 012345678
  • 示例4:限定匹配次数,输出3个数字的文本行
$ awk '/^[[:digit:]]{3}$/' sample1.txt
123
456

注意:正则表达式中的{3}表示匹配3个数字,其实,{}次数限定中有两个参数:{最少次数, 最多次数},使用时有很多用法:

  • {指定次数}:严格指定前面的匹配多少次。
  • {最小次数,}:至少要匹配上最小次数,多则不限, 比如:[0-9]{3,}可以匹配123123412345
  • {,最大次数}:至多匹配不要超过最大次数,最少为0次,比如:[0-9]{,3}可以匹配112123,但不能匹配1234
  • {,}:匹配0到无数次,和+的效果相同。注:{}是错误用法。

作者声明:本文用于记录和分享作者的学习心得,可能有部分文字或示例来自AI平台,如:豆包、DeepSeek(硅基流动)(注册链接)等,由于本人水平有限,难免存在表达错误,欢迎留言交流和指教!
Copyright © 2022~2025 All rights reserved.

http://www.xdnf.cn/news/18282.html

相关文章:

  • apisix负载均衡测试
  • Webrtc在项目中承担的角色
  • 决策树-信息增益(第二十三节课内容总结)
  • 第2章:进阶篇——第2节:索引
  • 从决策树基础到熵与信息增益
  • PYTHON让繁琐的工作自动化-函数
  • 【DL学习笔记】交叉熵损失函数详解
  • 人工智能包括哪些方面内容?
  • minio安装和配置
  • 大数据时代时序数据库选型指南:深度解析与 Apache IoTDB 实践
  • 国产!全志T113-i 双核Cortex-A7@1.2GHz 工业开发板—ARM + DSP、RISC-V核间通信开发案例
  • MiniMax Agent 上线 Market Place ,AI一键复制克隆网站
  • 如何解决IDEA/Datagrip无法连接数据库的问题:解决方法为添加参数-Djava.net.preferIPv4Stack=true
  • MySQL的锁:
  • Image and Video Tokenization with Binary Spherical Quantization 论文阅读
  • 【网络运维】Playbook项目实战:基于 Ansible Playbook 一键部署 LNMP 架构服务器
  • WPF---数据模版
  • 突破成长瓶颈:产品运营能力体系化提升技巧
  • CentOS 7更换国内镜像源
  • Golang context
  • 广州曼顿智能断路器:让用电更聪明,生活更安心!
  • 【案例分享】AI使用分享|如何运用 GPT完成小任务并提升效率 —— Prompt 与案例整理
  • P2404 自然数的拆分问题(典型的dfs)
  • 【运维进阶】实施任务控制
  • 【计算机网络面试】键入网址到网页显示期间,发生了什么?
  • MySQL定时任务详解 - Event Scheduler 事件调度器从基础到实战
  • 第三十九天(WebPack构建打包Mode映射DevTool源码泄漏识别还原)
  • 数据结构:二叉搜索树(Binary Search Tree)
  • Android Studio中创建Git分支
  • 高级堆结构