如何使正则表达式移动到下一个匹配?

时间:2015-04-09 05:31:18

标签: regex c++14 c++-standard-library

我尝试使用正则表达式查找以下模式的文本中的匹配项:

(500,0,'ABC',4),(550,0,'ABC',0),(450,0,'D\'E,F',0),(650,0,'G_HI',0);

我想要的是第一个数字字符串,但是如果第二个和第四个位置(总是数字)都为零,则仅 。在此示例中,这将导致这些匹配:

550    ABC
450    D\'E,F
650    G_HI

我提出的正则表达式是\((\d+),0,'(\S+?)',0但是当它找到4)时,它会一直消耗文本,直到它到达第一个0)。我希望它跳过这场比赛,然后尝试下一场比赛。

这是否可以使用正则表达式?

我使用C ++ 14 std :: regex,据我所知,它对几种方言有相当好的支持。

1 个答案:

答案 0 :(得分:2)

尝试将正则结构从\((\d+),0,'(\S+?)',0更改为\((\d+),0,'(([^']|\\')+)',0。这允许字符串包含非'个字符或字符串\'的任意组合。它符合您的要求。

Regex101 Demo