TRegexp 类
(翻译:YunHai 更新日期:2004年11月1日 E-Mail:yun_hai@hotmial.com)
TRegexp 类
包含文件
<owl/regexp.h>
描述
这是一个正则表达式类。Tregexp是一个被用作字符串搜索的类。
正则表达式使用这些特殊字符:. [ ] - ^ * ? + $
一般的规则:
除了特殊字符,字符相匹配它们自己。举例来说 "yardbird" 匹配 "yardbird"。
一个反斜线 (/)跟随的一个特殊字符,相匹配特殊字符它本身。举例来"Pardon /?" 匹配 "Pardon?"
下列各项转义代码可能用来相配控制字符:
| /b | Backspace(退格) |
| /e | Esc(取消) |
| /f | Formfeed(进纸) |
| /n | Newline(新行) |
| /r | carriage return(回车) |
| /t | Tab(制表) |
| /xddd | 这是十六进制数值 0xddd |
| /^x | X相配一些控制代码 (举例来说 /^c, /^c) |
单字符正则表达式:
“.” 匹配除/n以外的任何一个字符和特殊字符。举例来说 ".ive" 匹配 "jive" 或"five"。
“[” 与 “]” 匹配所包含的任意一个字符。举例来说, "[aeiou]" 也会相配 "a","e" , "i" , "o" 或 "u" 。特殊字符被用在[]里面,匹配指定范围内的任意字符。举例来说, "[ a-z ]" 会在a与z之间匹配任意的小写字母。
“^”匹配未包含的任意字符。 举例来说, "[ ^g-v ]" 会不匹配g-v之间的任意的小写字母。 举例来说,"[^ g- v]"。会匹配除g与v之间的任意小写字母。
多字符正则表达式:
“*”匹配前面的子表达式零次或多次。举例来说, "[ a-z ]*" 匹配以字母开头的表达式零次或多次
“+” 匹配前面的子表达式一次或多次。举例来说, "[ 0-9 ]+" 匹配以数字开头的字符。
“?”匹配前面的子表达式零次或一次。举例来说"xy?z" 匹配 "xy" 或 "xyz".
正则表达式组合
举例来说, "[ A-Z ][ a-z ]*" 匹配以大写字母开头的单词。
匹配从开始的位置到换行结束。
如果正则表达式以^开始,^匹配输入字符串的开始位置。举例来说, "^[ A-Z ][ a-z ]*"匹配以大写字母开始的行。
如果正则表达式以$结尾,$ 匹配输入字符串的结束位置。举例来说, "[ A-Z ][ a-z ]*$" 匹配用大写字母开头的单词结束的行.
StatVal
语法:
enum StatVal{OK=0, ILLEGAL, TOOLONG};
描述
StatVal 枚举被 TRegexp::status 返回的状态
| 状态 | 描述 |
| OK | 意谓着给定的正则表达式是合法的 |
| ILLEGAL | 意谓式样是违法的违法的 |
| TOOLONG | 意谓式样超过了最大的长度 (128) |
公有构造函数
形式1:
TRegexp(const char far* cp);
形式2:
TRegexp(const TRegexp far& r);
描述:
形式1:
构造一个正则表达式对象,使用cp作为正则表达式。
形式2:
构造正则表达式对象复制对象r。
公有成员函数
find
语法:
size_t find(const string& s, size_t* len, size_t start=0)
描述:
在一个字符串中查找第一个匹配正则表达式的字符串。搜索从start开始,而且 len 返回相匹配字符串的长度。返回匹配字符串的开始位置。如果没有匹配被发现,len 是 0,并且返回 -1 。
status
语法:
StatVal status()
描述:
返回这一个正则表达式的状态。
状态值是:
| 状态 | 描述 |
| OK | 意谓着给定的正则表达式是合法的 |
| ILLEGAL | 意谓式样是违法的违法的 |
| TOOLONG | 意谓式样超过了最大的长度 (128) |
操作符
=
形式1:
TRegexp& operator=(const TRegexp& r)
形式2:
TRegexp& operator=(const char* cp)
描述:
形式1:
将正则表达式对象实例r复制给当前正则表达式实例。
形式2:
将一个正则表达式对象的正则表达式设置为cp。