pjqblues
C++博客
首页
新随笔
联系
聚合
管理
公告
<
2024年11月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
统计
随笔 - 9
文章 - 13
评论 - 3
引用 - 0
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(1)
给我留言
查看公开留言
查看私人留言
随笔分类
c++(1)
(rss)
随笔档案
2007年10月 (2)
2007年1月 (1)
2006年12月 (1)
2006年11月 (2)
2006年9月 (1)
2006年8月 (2)
文章分类
c++
(rss)
crack
(rss)
文章档案
2007年6月 (1)
2006年12月 (1)
2006年9月 (6)
2006年8月 (5)
搜索
最新评论
1. re: offsetof 解析
评论内容较长,点击标题查看
--XXX
2. re: offsetof 解析
补充一下,size_t是unsigned int。
--read more books
3. re: 上海印象
哈哈,顶!
--周星星
阅读排行榜
1. offsetof 解析(4190)
2. 使用标准C++的类型转换符:static_cast、dynamic_cast、reinterdivt_cast、和const_cast(3162)
3. com中以结构体作为接口参数(957)
4. Getting an (ATL) ActiveX control to print from Office Applications(511)
5. 转===如何用ATL创建ActiveX控件(牛人翻译的)(503)
评论排行榜
1. offsetof 解析(2)
2. 上海印象(1)
3. 美国让人喷饭的法律(0)
4. DB2免费版(0)
5. 转===如何用ATL创建ActiveX控件(牛人翻译的)(0)
boost::regex的用法---构建正则式
boost::regex
boost::regex的用法
bool
validate_card_format(
const
std::
string
s)
{
static
const
boost::regex e(
"
(\\d{4}[- ]){3}\\d{4}
"
);
return
regex_match(s, e);
}
boost::regex的默认正则表达式语法是perl语法
boost::regex支持perl regular表达式、POSIX
-
Extended regular表达式和POSIX
-
Basic Regular表达式,但默认的表达式语法是perl语法,如果要使用其余两种语法需要在构造表达式的时候明确指定。
例如,下面两种方法效果相同
//
e1 is a case sensitive Perl regular expression:
//
since Perl is the default option there's no need to explicitly specify the syntax used here:
boost::regex e1(my_expression);
//
e2 a case insensitive Perl regular expression:
boost::regex e2(my_expression, boost::regex::perl
|
boost::regex::icase);
perl正则表达式语法
perl正则表达式语法可参见《perl语言入门》第7、
8
、9章或boost的文档。这里列出的语法是不全面的,而且部分说明可能并不清楚。
. 任意字符;使用match_no_dot_null标志时不匹配NULL字符; 使用match_not_dot_newline时不匹配换行字符
^
匹配行的开始
$ 匹配行的结束
*
重复零次或则更多,例如a
*
b可匹配b,ab,aab,aaaaaaab
+
重复一次以上,例如a
+
b可匹配ab,aab,aaaaaaaab。但不能匹配b了
?
零次或则一次,例如ca
?
b匹配cb,cab但不匹被caab
a
{n}
匹配字符
'
a
'
重复n次
a
{n,}
,字符a重复n次以上(含n次)
a
{n,m}
a重复n到m次(含)
*?
匹配前一个原子零次以上
+?
匹配前一个原子一次以上
??
匹配前一个原子零次以上
{n,}
?
匹配前一个原子n次以上(含)
{n,m
?
匹配前一个原子n到m次(含)
|
或操作,例如ab(d
|
ef)匹配abd或则abef
[] 字符集操作,例如[abc]将匹配任何单个字符
'
a
'
,
'
b
'
,
'
c
'
[a
-
d],表示a、b、c、d
^
否操作,例如[
^
a
-
c]表示a至c之外的所有字符
boost::regex对unicode编码的支持
boost::regex使用ICU来实现对unicode及unicode变种的支持,这需要在编译boost的时候指出是否使用ICU以及ICU所在的目录。否则编译出来的boost::regex不支持unicode编码。其中boost::wregex支持unicode编码的搜索,如果要搜索UTF
-
8
、UTF
-
16
、UFT
-
32编码的字符串,则要用boost::u32regex。注意boost::wregex只能支持unicode编码,不能支持uft编码。
搜索时如何忽略大小写
如果要在搜索时忽略大小写(即大小写不敏感),则要用到表达式选项boost::regex::icase,例如: boost::regex e2(my_expression, boost::regex::perl
|
boost::regex::icase);
posted on 2006-08-25 17:48
blues
阅读(1350)
评论(0)
编辑
收藏
引用
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理