正则: 捕捉群体内部结构的重复?

By simon at 2019-05-12 • 0人收藏 • 11人看过

我有一个可变长度的值串(比特实际上是1和0,是32的倍数)。 例如:

01001101100111100111001101000100111011000110001110001010001110001110010010100100100110001100110011011111110110110110110110110110110110110101101010110101101101100011001

每个32位块包含一个内部结构: 前8位和后24位属于同一个位。

我喜欢

  • 获取每个32位块并
  • 每个区块的内部结构

在一个正则表达式中。

我的工作

^ (([01]{8})([01]{24}){0,} $

没有成功,因为它只匹配上一个街区。

这样的正则表达式可能吗? 要寻找什么? 我做错了什么?

1 个回复 | 最后更新于 2019-05-12
2019-05-12   #1

我稍微修改了它使用这个工具:

(([0-1]{8})([0-1]{24})

如果我理解正确,您可能不希望用 start 和 end 字符绑定它。 您可以简单地在它周围使用另一个捕获组,并与您已经拥有的其他两个捕获组一起提取数据,如您所愿。

正则描述图

这个链接帮助你形象化你的表情

测试演示

Const regex / ((([0-1]{8})([0-1]{24}) / gm; const str'010011011001110111100111011010001001100011101100100011100010100011110010100011001111111101101001'; const subst'Group # 2: $1 nGroup # 2: $2 nGroup # 3: $3 n'; / / 替换值将包含在 result 变量 const result str.replace (regex,subst) ; con.log ('Substitution result:',result) ;

表现测试

这个代码片段返回100万次的运行时为了循环。

Const repeat 1000000; const start Date.now () ; for (var i repeat; i 0; i --){ const regex / (([0-1]{8})([0-1]{24})) / gm; const str'010011011001110111100111011010001001100011101100100011100010100011110010100011001111111101101001'; const subst'nGroup # 1: $1 nGroup # 2: $2 nGroup # 3: $3'; var match str.replace (regex,subst) ; } const Date.now ()-start; con.log ("yaay! "+ match +""is a match") ; console.log (end / 1000 +"是"+ repeat +"times benchmark test"的运行时 ;

登录后方可回帖

Loading...