gpt4 book ai didi

regex - 将二进制数分成零组和一组

转载 作者:行者123 更新时间:2023-12-02 01:12:40 26 4
gpt4 key购买 nike

我有一个二进制数,例如 10000111000011,并希望将其分成连续的 1 和 0 组,1 0000 111 0000 11

我认为这是使用环视的绝佳机会:我的正则表达式对数字使用正向后查找(它捕获该数字以供以后反向引用),然后对同一数字使用负向前查找(使用反向引用) ,所以只要一个数字后面跟着一个不同的数字,我就应该进行分割。

use strict;
use warnings;
use feature 'say';

my $bin_string = '10000111000011';
my @groups = split /(?<=(\d))(?!\g1)/, $bin_string;

say "@groups";

但是,这会导致

1 1 0000 0 111 1 0000 0 11 1

不知何故,捕获的数字会在每次分割时插入。出了什么问题?

最佳答案

这是对您的代码的一个小修复:

my @groups = split /(?<=0(?!0)|1(?!1))/, $bin_string;

您遇到的问题是,当使用split时,捕获的文本也会输出到结果数组中。因此,解决方案是摆脱捕获组。

由于您的输入中只有 01,因此通过交替和前瞻来确保数字发生变化非常容易。

参见demo

关于regex - 将二进制数分成零组和一组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31781987/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com