加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – 如何拆分并保存到数组

发布时间:2020-12-14 05:49:41 所属栏目:百科 来源:网络整理
导读:^0806EA^0406F0^^^^^^EF07F7--^E3DC03--^EAFE02--^0406F0^^^FFE209^^^DFF107^^^F6F508^^^E4DE01^^^EF07F7--^E803E6-- 在上面的代码中,我想拆分这个^但问题是,这个十六进制数据具有相同的模式^. 我想要这样的结果: ^0806EA ^0406F0^^^^^ ^EF07F7-- ^E3DC03--
^0806EA^0406F0^^^^^^EF07F7--^E3DC03--^EAFE02--
^0406F0^^^FFE209^^^DFF107^^^F6F508^^^E4DE01^^^EF07F7--^E803E6--

在上面的代码中,我想拆分这个^但问题是,这个十六进制数据具有相同的模式^.

我想要这样的结果:

^0806EA ^0406F0^^^^^ ^EF07F7-- ^E3DC03-- ^EAFE02--
^0406F0^^ ^FFE209^^ ^DFF107^^ ^F6F508^^ ^E4DE01^^ ^EF07F7-- ^E803E6--

要么 :

0806EA 0406F0^^^^^ EF07F7-- E3DC03-- EAFE02--
0406F0^^ FFE209^^ DFF107^^ F6F508^^ E4DE01^^ EF07F7-- E803E6--

解决方法

由于您不希望在拆分中使用任何字符 – 而且您似乎也不希望它们本身成为一个组,因此您需要所谓的“零宽度断言”.由于我们谈论的是插入符号,因此字边界不起作用.它不在一条线的开头或结尾,因此唯一可行的ZWA是前瞻或后视.

既然你想在指定的模式前打破你的块,我会建议一个前瞻,包括:一个插入符号非插入符号或字符串结尾,如下所示:

split /(?=^(?:[^^]|$))/;

如下图所示:

while ( <DATA> ) { 
    my @list = split /(?=^(?:[^^]|$))/;
    say "@list";
}

__DATA__
^0806EA^0406F0^^^^^^EF07F7--^E3DC03--^EAFE02--
^0406F0^^^FFE209^^^DFF107^^^F6F508^^^E4DE01^^^EF07F7--^E803E6--

输出:

^0806EA ^0406F0^^^^^ ^EF07F7-- ^E3DC03-- ^EAFE02--

^0406F0^^ ^FFE209^^ ^DFF107^^ ^F6F508^^ ^E4DE01^^ ^EF07F7-- ^E803E6--

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读