如何使正则表达式移动到下一个匹配项?
How can I make a regular expression move to the next match?
我正在尝试使用正则表达式在以下模式的文本中查找匹配项:
(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,据我所知,它对多种方言都有很好的支持。
尝试将正则表达式从 \((\d+),0,'(\S+?)',0
更改为 \((\d+),0,'(([^']|\')+)',0
。这允许字符串包含非 '
字符或字符串 \'
的任意组合。它符合您的要求。
我正在尝试使用正则表达式在以下模式的文本中查找匹配项:
(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,据我所知,它对多种方言都有很好的支持。
尝试将正则表达式从 \((\d+),0,'(\S+?)',0
更改为 \((\d+),0,'(([^']|\')+)',0
。这允许字符串包含非 '
字符或字符串 \'
的任意组合。它符合您的要求。