13.2我需要一些处理正则表达式或通配符匹配的代码
确保你知道经典的正则表达式和文件名通配符的不同。前者的变体在Unix工具ed 和grep 等中使用, 后者的变体在多数操作系统中使用。有许多匹配正则表达式的包可以利用。很多包都是用成对的函数, 一个“编译” 正则表达式, 另一个“执行” 它, 即用它比较字符串。查查头文件<regex.h> 或<regexp.h> 和函数regcmp/regex, regcomp/regexec, 或re comp/re exec。这些函数可能在一个单独的regexp 库中。在ftp://ftp.cs.toronto.edu/pub/regexp.shar.Z或其它地方可以找到一个Henry Spencer 开发的广受欢迎的regexp 包, 这个包也可自由再发布。GNU 工程有一个叫做rx 的包。参见问题18.18。
文件名通配符匹配(有时称之为“globbing”) 在不同的系统上有不同的实现。
在Unix 上, shell 会在进程调用之前自动扩展通配符, 因此, 程序几乎从不需要专门考虑它们。在MS-DOS 下的编译器中, 通常都可以在建立argv 的时候连接一个用来扩展通配符的特殊目标文件。有些系统(包括MS-DOS 和VMS) 会提供通配符指定文件的列表和打开的系统服务。参见问题19.25 和20.2。
文件名通配符匹配(有时称之为“globbing”) 在不同的系统上有不同的实现。
在Unix 上, shell 会在进程调用之前自动扩展通配符, 因此, 程序几乎从不需要专门考虑它们。在MS-DOS 下的编译器中, 通常都可以在建立argv 的时候连接一个用来扩展通配符的特殊目标文件。有些系统(包括MS-DOS 和VMS) 会提供通配符指定文件的列表和打开的系统服务。参见问题19.25 和20.2。