求解正确的正则表达式,问题核心是正则表达式如何获得组的“所有”匹配的内容,而不仅是最后的匹配?

Jarrylogin 2017-08-24 06:19:32
std::string = "('k1'='v1';'k2'='v2';123;'k3'='v3')";

我写的正则表达式是: (^\()([^;]+;)*([^\)]+)(\)$)

我的结果如下:

Full match `('k1'='v1';'k2'='v2';123;'k3'='v3')`
Group 1. `(`
Group 2. `123;`
Group 3. `'k3'='v3'`
Group 4. `)`

我希望的结果如下。

Full match `('k1'='v1';'k2'='v2';123;'k3'='v3')`
Group 1. `(`
Group 2. 'k1'='v1';
Group 3. 'k2'='v2';
Group 4. `123;`
Group 5. `'k3'='v3'`
Group 6. `)`

请帮我看一下?
...全文
667 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaohuh421 2017-08-28
  • 打赏
  • 举报
回复
[^;\)\("]+ 使用这个正则. 会得到结果 其5组, 手动去掉第一组即可. 因为第一组必有. std::string = 'k1'='v1' 'k2'='v2' 123 'k3'='v3'
赵4老师 2017-08-25
  • 打赏
  • 举报
回复
提醒:在字符串扫描提取替换问题域中,正则表达式不是万能的;而有限状态自动机是万能的。 参考《编译原理》中的词法分析和有限状态自动机。
oyljerry 2017-08-24
  • 打赏
  • 举报
回复
把你需要的数据也用分组捕获一下

3,055

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC HTML/XML
社区管理员
  • HTML/XML社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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