如何用正则表达式匹配到所有双引号内的逗号?

2017-07-20 17:31:21 +08:00
 Seymer

数据形如: 我们希望 V2EX 能够成为"中文,世界"中氛围最好的社区,而实现这个目标,"需要,我们"所有人的共同努力:友善,公平,尊重知识和事实。

  1. 中文,世界 内的逗号;
  2. 需要,我们 内的逗号;
  3. 。。。
5929 次点击
所在节点    问与答
10 条回复
yunkchen
2017-07-20 17:35:22 +08:00
r"\".*?(,).*?\""

是要这样?
AJian
2017-07-20 17:39:32 +08:00
\".*?(,).*?\"
AJian
2017-07-20 17:40:21 +08:00
ArcticL
2017-07-20 17:52:39 +08:00
@AJian 请问(.*)?和(.*?) 有什么区别? 匹配的结果是不一样的
AJian
2017-07-20 18:02:24 +08:00
一个是贪婪匹配一个是懒惰匹配,https://deerchao.net/tutorials/regex/regex.htm#greedyandlazy
geelaw
2017-07-20 18:50:13 +08:00
那么,双引号不配对的情况呢?
geelaw
2017-07-20 18:51:16 +08:00
@yunkchen
@AJian

"你好"是一句话,"你好吗"是另一句
geelaw
2017-07-20 18:53:33 +08:00
一个简单的想法是:首先零宽断言,要求前缀从字符串开头开始,且具有恰好奇数个双引号;然后进入正文匹配一个逗号。

但是在引号不配对的时候这个问题不良定义。
ptrees
2017-07-21 13:04:19 +08:00
@ArcticL 两个 ? 的意思都不一样,前者表示 0 或 1,后者表示非贪婪匹配
ArcticL
2017-07-21 14:57:08 +08:00
@ptrees 清楚了,谢谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/376764

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX