AI 助教问 AI 助教
东方瑞通 · 红帽RHCE

正则表达式与文本匹配

正则表达式(regex)是描述文本模式的字符序列,用 grep 等工具匹配和查找符合模式的文本。

考点精讲

  1. 基本正则元字符:.(点)匹配任意单个字符、* 匹配前一项零次或多次、^ 匹配行首、$ 匹配行尾、[ ] 字符类匹配括号内任一字符。grep '模式' 文件 查找匹配行,grep -i 忽略大小写、grep -v 反向匹配、grep -n 显示行号。扩展正则需用 grep -E(或 egrep),额外支持 +(一次或多次)、?(零或一次)、|(或)。注意 * 在正则中不是「任意字符」而是「前一项重复」,这与 Shell 通配符的含义不同。

记忆技巧

「点任意、星重复、尖号行首尾、方括号字符类」。
「^ 开头 $ 结尾」——尖号在上表示行首,美元在下表示行尾。
「+ ? | 要 -E」,扩展正则用 grep -E(或 egrep)。

常见误区

  • 误区:混淆基本正则与扩展正则。正解:+ ? | 需用 grep -E 才生效,普通 grep 不识别。
  • 误区:以为 * 表示任意字符。正解:* 表示前一项重复零次或多次,与 Shell 通配符含义不同。
  • 误区:把 grep 的 . 当成字面点。正解:. 匹配任意单字符,要匹配字面点需转义 \.。

真题思路

  • 【示例】 用 grep 匹配「以 abc 开头」的行,正确的正则写法是?
    A. grep 'abc$' file B. grep '^abc' file C. grep 'abc*' file D. grep 'abc.' file
    答案:B
    解析:^ 匹配行首,^abc 表示以 abc 开头;$ 匹配行尾;* 表示前一项重复;. 匹配任意单字符。

常见问题

Q:怎么匹配以某个词开头的行

A:grep '^词' 文件。

Q:怎么忽略大小写搜索

A:grep -i '模式' 文件。

Q:扩展正则用哪个命令

A:grep -E 或 egrep。

相关知识

教材出处:RH134 第2章 正则表达式与文本匹配

AI 助教

让 AI 助教带你深入学习,把你卡住的地方直接问它

随时为您答疑解惑

开始答疑