VC++使用boost::regex::perl正则表达式的问题,求高手

forever1dreamsxx 2012-01-09 09:25:41
我现在要在VC++6.0中,用正则表达式匹配,从TXT文档和Word文档中读出来的内容,得到自己想要的部分。但遇到了一些问题,希望得到你们的帮助。
假如我的txt文档里面是下面一段话:
李俊[哈尔滨]高宏伟 2007-05-15 呵呵 Blog:http://dukejoe.yeah.net
李俊左边肩膀上的第二个包里塞着个信封,信封上赫然印着“大宋教育部”几个红字,
信封里面的内容大约是兹有李俊同志分配至水浒书院任教之类的云云。
话说李俊这人是正宗的三代贫农出生,爷爷李大系渔民,他爹李大弟
系渔民TOO,都没什么文化,还好有个过路的算命先生看到此儿天生骨骼奇异,免费赐
了一个俊字,否则这个世上估计只有李小弟而没有李俊了.

我用这样一个正则表达式:"((\\S|\\s)*)[^.]*(李俊)((\\S|\\s)*)[^.]" 只能匹配最后一个“李俊”,但我想匹配所有的李俊,就把我的正则表达式改成:"(((\\S|\\s)*)[^.]*(李俊)((\\S|\\s)*)[^.])*",结果不行,我试了很久都不行。
同样在word中得话,我把读出来得内容转换成宽字节的,再进行匹配,还是出现了同样的问题。
我想是因为我从文档中把内容读出来保存到的时候,把文档每一行的换行符都弄掉了,导致最后我上面的那一段文字成了一行文字,保存在我定义的数组。所以就只可以匹配得到最后一个,而匹配换行的[^.]没起到作用。
我现在就想在VC++中用正则表达式,匹配一个关键字在文档中得位置,我该怎么将内容读出来,而且还保留原来的换行符,读出来后,我上面那样能匹配出一个词语所有的出现位置吗?
匹配中文的话,有必要转换成宽字节再进行匹配吗?
希望哪位大侠帮忙,小弟感激不尽。
...全文
61 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧