Boost中的正则表达式能支持这种形式吗?

lujun-cc 2008-08-05 11:39:38
想找出insert SQL语句中第N列的列名,
例如:
insert into tablenae (f1,f2,f3) values (v1,v2,v3)
使用下面的表达式
(?<=^\s*insert\s*into\s*\b\w+\b\s*\((\s*\b\w+\b\s*,?){0})\s*\b\w+\b 可以匹配其中的 f1
(?<=^\s*insert\s*into\s*\b\w+\b\s*\((\s*\b\w+\b\s*,?){1})\s*\b\w+\b 就可以匹配到 f2

这是则RegexBuddy中使用JGsoft模式测试过了的,但Boost中的正则表达式默认是Perl语法,好像不支持这种语法,不知道Boost能否支持这种语法?
...全文
125 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
柯本 2008-08-07
  • 打赏
  • 举报
回复
我试了一下,的确有难度,但有一变通方法,就是将结果再处理一下,将后面的,去掉
lujun-cc 2008-08-06
  • 打赏
  • 举报
回复
恩,顶一下,不过这个表达式有一个小小的缺陷,就是会把后面的逗号也包含进去,我试了几把没能去掉,老大能否再优化一下呢?
moonwrong 2008-08-06
  • 打赏
  • 举报
回复
支持的,regex下的fbcb6,这个库应该需要单独编译后才能使用。
expter 2008-08-06
  • 打赏
  • 举报
回复
看看。。。
柯本 2008-08-06
  • 打赏
  • 举报
回复
boot库的确不支持你的表达式,改一下:
^\s*insert\s*into\s*\b\w+\b\s*\((\s*\b\w+\b\s*,?){1}.* //可以匹配其中的 f1,
^\s*insert\s*into\s*\b\w+\b\s*\((\s*\b\w+\b\s*,?){2}.* //可以匹配其中的 f2,
mniwjb 2008-08-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 moonwrong 的回复:]
支持的,regex下的fbcb6,这个库应该需要单独编译后才能使用。
[/Quote]

64,642

社区成员

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

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