所以说我有一个字符串:
' aaggbb'
我想找到所有类型为aXXXb的组,其中X是任何字符。 我以为正则表达式:
/(a(?:...)b)/ig
可以做到这一点,但它只获得第一个:
'的 aaggb B'
并错过了第二个:
'一个的 aggbb '
我如何同时获得两者?
我搜索了一会儿试图解决这个问题,所以我希望我没有错过任何非常明显的事情。谢谢!
答案 0 :(得分:4)
如果您正在寻找固定长度的子串,那么您需要使用限制量词(?=(a.{3}b))
(恰好匹配3个符号)来指定它,并在预测中使用捕获来匹配所有子串:
var re = /(?=(a.{3}b))/g;
var str = 'aaggbb';
while ((m = re.exec(str)) !== null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
document.getElementById("demo").innerHTML += m[1] + "<br/>";
}
请参阅demo
前瞻不消耗字符,并且将启用重叠匹配。 “消费”意味着在前瞻或后视的右括号之后的,正则表达式引擎留在它开始寻找的字符串中的同一个位置:它没有移动。从该位置开始,引擎可以再次开始匹配字符。(来自rexegg.com)
<div id="demo" />
#define OUT_PINS {X2_PIN, PIOC, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT}, \
{Y2_PIN, PIOC, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT}, \
{Z2_PIN, PIOC, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT}