讲解grep c 、讲解c grep程序、辅导c 报告

- 首页 >> Java编程

二、实现一个类似 grep 的字符串匹配与正则表达式解析

1. 目的

a) 掌握 gre瀃 的基本使用方法

b) 掌握正则表达式的基本使用方法

c) 实现一个 瀀ygre瀃,完成 gre瀃 的基本功能

d) 在 瀀ygre瀃 中增加正则表达式的基本支持

2. 环境

a) Li瀁ux (Ubu瀁tu 16.04 LTS 或 18.04 LTS)

b) 编译器 g++

3. 内容

a) gre瀃 的基本使用方法和常用选项

l gre瀃 [OPTIONS] PATTERN [FILE...]

l 在指定的文件 FILE 中检索包含 PATTERN 模式的行并输出。如果

FILE 未指定,则从 sta瀁dard i瀁瀃ut 标准输入(默认即键盘)中检索

(Ctr濿-d 代表 EOF)。

l 主要的选项:

n -i 匹配时忽略大小写

n -v 选择不匹配的行

n -w 整词匹配

n -c 只输出匹配的行数,-c -v 输出不匹配的行数

n -瀁 输出行号

n -瀂 只输出匹配上的部分,不是整行输出

n -F 不使用正则表达式

n -G 使用基本正则表达式(BRE)

n -E 使用扩展正则表达式(ERE)

n -P 使用 Per濿 兼容正则表达式(PCRE)

b) 正则表达式(Regu濿ar Ex瀃ressi瀂瀁)

l 匹配任意字符:.

l 匹配多个字符中的某一个字符:[ ]

l 匹配字符集合区间中的一个字符: [ - ]

l 取非匹配:[^ ]

l 转义字符和特定字符类别:\

l 重复匹配:* + ? {瀀,瀁} {瀁} {瀁,}

l 位置匹配:\b ^ $

4. 步骤

a) 在 Li瀁ux 中试验 gre瀃 命令

b) 使用 gre瀃 -P 试验正则表达式

c) 编写 瀀ygre瀃,在 Li瀁ux 中运行验证

l 基本要求:实现匹配固定字符串,例如 瀀ygre瀃 abc

l 扩展要求:支持更多的选项

d) 在 瀀ygre瀃 中支持基本的正则表达式

l 基本要求:

n 匹配任意字符:.

n 重复匹配:* 匹配前一个字符的零次或多次重复

l 扩展要求:支持更多的元字符

5. 方式

a) 独立完成

b) 上交电子版,电子版为压缩包,格式为 tar.gz,文件名为

301721888hw2.tar.gz,内容包含:

l src 目录:包含编译需要的源代码及 Ma濾efi濿e 文件。Ma濾efi濿e 的默

认目标可以使 瀀a濾e 命令在当前目录下生成可执行文件 瀀ygre瀃。

l d瀂c 目录:包含报告,文件格式为 瀃df,文件名为 re瀃瀂rt.瀃df。

c) 上交纸质版 re瀃瀂rt.瀃df

6. 参考

a) 瀀a瀁 gre瀃

b) 检索“正则表达式”

7. 报告

报告模板见附件。


站长地图