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

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

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

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

文本样例:

txt 复制代码
sample
123
456
789abc
012345678
end

awk代码及运行结果:

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

awk代码及运行结果:

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

awk代码及运行结果:

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

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

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

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

Copyright © 2022~2025 All rights reserved.

相关推荐
yivifu16 小时前
能够使用Python正则表达式函数的文本处理工具——Calibre电子书编辑器
正则表达式
AI前端工程狮1 天前
Agent 不会报错,只会变笨:给 MCP Server 补上契约测试和回放测试
人工智能·编程语言
全栈陈序员1 天前
【Python】基础语法入门(二十九)—— 正则表达式实战:文本处理利器
开发语言·人工智能·python·正则表达式
codigger2 天前
前端没有被杀死,被杀死的是"只会把设计稿变成页面"
前端·ai·ai编程·编程语言·全栈·#人工智能
全栈弄潮儿3 天前
Python实战第13期:模块与包
后端·python·编程语言
codigger3 天前
别再手动催 AI 干活了:一文读懂 Loop Engineering(循环工程)
ai·程序员·编程语言·#人工智能
晓蛋4 天前
什么是C语言
c语言·跨平台·编程语言·高级语言·低级语言
计算机魔术师5 天前
做前端 UI 的人,接下来得先过一道开源技能的"设计质检"
编程语言
苜蓿muxu6 天前
简述 ConcurrentHashMap 和 CopyOnWriteArrayList 的区别以及各自适用场景
java·编程语言
路就在脚下6 天前
2026最新Rust入门教程[18]:面向对象语言特性-trait 对象与多态
编程语言