【发布时间】:2013-08-07 02:24:07
【问题描述】:
我希望能够在一行中捕获重复组。我已经完成了如下所示的工作;
(((?:\s*^>\s*[0-9]+\s*,\s*[0-9]+\s*,\s*[a-zA-Z]+\s*(,\s*[a-zA-Z]+\s*)*;$\s*)|(?:\s*^>\s*[0-9]+\s*,\s*[0-9]+\s*,\s*[a-zA-Z]+\s*,\s*[0-9]+\s*(,\s*[\-]?[0-9]+\s*)*;$\s*))+)
它可以单独捕获> 9, 2, door, open; 和> 3, 3, door,1, 1;。但是,我也想捕获> 9, 2, door, close; > 1, 9, door, close; > 3, 3, door, 1, 1;。我通过在末尾使用带 + 量词的括号括起我的组,但它没有正确捕获重复模式。你能告诉我我哪里做错了吗?
已编辑
我将正则表达式缩短如下;
(((\s*>\s*\d+\s*,\s*\d+\s*,\s*\w+\s*(,\s*\w+\s*)*;\s*)|(\s*>\s*\d+\s*,\s*\d+\s*,\s*\w+\s*,\s*\d+\s*(,\s*[\-]?\d+\s*)*;\s*))+)
【问题讨论】:
标签: regex debugging regex-greedy