VC++使用正则表达式的问题。

forever1dreamsxx 2012-01-05 03:05:40
我现在要在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++中用正则表达式,匹配一个关键字在文档中得位置,我该怎么将内容读出来,而且还保留原来的换行符,读出来后,我上面那样能匹配出一个词语所有的出现位置吗?
匹配中文的话,有必要转换成宽字节再进行匹配吗?
希望哪位大侠帮忙,小弟感激不尽。
...全文
422 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2012-01-09
  • 打赏
  • 举报
回复
使用RegTest工具。

正则表达式速查 正则表达式举例 正则表达式学习 (4页A4纸)
http://download.csdn.net/detail/zhao4zhong1/1808549
forever1dreamsxx 2012-01-09
  • 打赏
  • 举报
回复
怎么没人来啊!
forever1dreamsxx 2012-01-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhao4zhong1 的回复:]

你想匹配第一次,结果却匹配最后一次的根本原因是你没用?
? 当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串"oooo",'o+?'将匹配单个"o",而'o+'将匹配所有'o'。
[/Quote]
就像你上面说的一样,'o+?'将匹配单个"o",'+'是匹配一个或者多个,'?'是匹配零个或者一个,为什么还要用'o+?'而不是直接用'o?'。还有像我上面的那样一段文字,我不是想匹配第一个我是想把所有的“李俊”都匹配出来,我这个:"((\\S|\\s)*)[^.]*(李俊)((\\S|\\s)*)[^.]"该怎么改啊。
小弟最近才学这个头都整大了,希望你帮个忙。
赵4老师 2012-01-09
  • 打赏
  • 举报
回复
你想匹配第一次,结果却匹配最后一次的根本原因是你没用?
? 当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串"oooo",'o+?'将匹配单个"o",而'o+'将匹配所有'o'。
forever1dreamsxx 2012-01-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhao4zhong1 的回复:]

使用RegTest工具。

正则表达式速查 正则表达式举例 正则表达式学习 (4页A4纸)
http://download.csdn.net/detail/zhao4zhong1/1808549
[/Quote]
你这个只是基本的语法之类的得嘛,我现在的问题如题,你那上面好像和这个没有关系。。。不过还是谢谢你

65,189

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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