正则表达式笔记
http://www.cppblog.com/kenlistian/archive/2008/04/29/48404.html 1.正则表达式笔记 必须记住的几个符号和组合 使用范例: x? 匹配 0 次或一次 x 字符串x* 匹配 0 次或多次 x 字符串,但匹配可能的最少次数,*必须跟随一个字符后面,不能单独出现 x+ 匹配 1 次或多次 x 字符串,但匹配可能的最少次数,+必须跟随一个字符后面,不能单独出现 .* 匹配 0 次或一次的任何字符 .+ 匹配 1 次或多次的任何字符 界定范围和位置 (?=exp) 零宽先行断言,它匹配文本中的某些位置,这些位置的后面能匹配给定的后缀exp。 (?<=exp) 零宽后行断言,它匹配文本中的某些位置,这些位置的前面能给定的前缀匹配exp。 (?!exp) 零宽负向先行断言。会匹配后缀exp不存在的位置。 (?<!exp) 零宽负向后行断言。查找前缀exp不存在的位置. 条件匹配:(zc:这个复杂,但也不复杂。属于perl中的扩展部分,略) Conditional Expressions (?(condition)yes-pattern|no-pattern) (?(condition)yes-pattern) attempts to match yes-pattern if the condition is true,otherwise fails. condition may be either a forward lookahead assert,or the index of a marked sub-expression
2. boost中分有match,search,replace,在vc中,其正则表达式以上表示需要双反斜杠表示。其中在 match是匹配整个句子,在实际应用中,必须是构造整个句子的正则表达,而在一篇文章匹配的话,以search用的 比较多,如下见一个片段。没有用到std,可见用boost在匹配查询时,其比较麻烦: void test123() { CString str = "singing while youre dancing."; regex ee_all("bw+b"); cmatch result; CString ret; while(regex_search(str,result,ee_all,match_perl)){ for(int i=0; i < result.size(); i++){ ret = result[i].str().c_str(); AfxMessageBox(ret); str = result[i].second; } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |