我尝试使用正则表达式查找以下模式的文本中的匹配项:
(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,据我所知,它对几种方言有相当好的支持。
答案 0 :(得分:2)
尝试将正则结构从\((\d+),0,'(\S+?)',0
更改为\((\d+),0,'(([^']|\\')+)',0
。这允许字符串包含非'
个字符或字符串\'
的任意组合。它符合您的要求。