Perl split函数

PHP有explode函数,Python, Ruby and JavaScript 都有各自的分割(split)方式. 在perl中有split函数

文章来源:(https://perlmaven.com/perl-split)

  • 1 Syntax of split

    split REGEX, STRING 按照正则表达式(regex)分割字符串
    split REGEX, STRING, LIMIT 可以最多分割成LIMIT个块
    split REGEX 如果没给字符串,默认是$_
    split 没有任何参数,$_用/\s+/作为正则表达式

  • 2 Simple cases

    split 返回一个字符串列表:

use Data::Dumper qw(Dumper);my $str = "ab cd ef gh ij";
my @words = split / /, $str;
print Dumper \@words;
result:$VAR1 = ['ab','cd','ef','gh','ij'];
  • 3 Limit the number of parts

    当limit = 2 时,split返回两个参数

use Data::Dumper qw(Dumper);my $str = "ab cd ef gh ij";
my @words = split / /, $str, 2;
print Dumper \@words;
result:$VAR1 = ['ab','cd ef gh ij'];
  • 4 Assign to scalars

    我们可以将结果分配给一个标量变量列表,而不是将结果分配给单个数组

方法一my $str = "root:*:0:0:System Administrator:/var/root:/bin/sh";
my ($username, $password, $uid, $gid, $real_name, $home, $shell) = split /:/, $str;
print "$username\n";
print "$real_name\n";result:
root
System Administrator方法二my $str = "root:*:0:0:System Administrator:/var/root:/bin/sh";
my @fields = split /:/, $str;
my $username = $fields[0];
my $real_name = $fields[4];
print "$username\n";
print "$real_name\n";result:
root
System Administrator方法三 使用数组切片my $str = "root:*:0:0:System Administrator:/var/root:/bin/sh";
my @fields = split /:/, $str;
my ($username, $real_name) = @fields[0, 4];
#等价于 my ($username, $real_name) = (split /:/, $str)[0, 4];
print "$username\n";
print "$real_name\n";result:
root
System Administrator
  • 5 Split on more complex regex

    用更复杂的正则分割

use Data::Dumper;
my $str="fname    = Foolname =    Baremail=foo@bar.com";
my @array=split/=/,$str;
print Dumper(\@array);result:
$VAR1 = ['fname    ',' Foolname ','    Baremail','foo.com'];上面的结果有什么不妥的地方呢?我们发现分成的四部分中有空格的存在,而空格未必是我们想要的。 所以我们要对程序进行改进use Data::Dumper;
my $str="fname    = Foolname =    Baremail=foo@bar.com";
my @array=split/\s*=\s*/,$str;
print Dumper(\@array);result:
$VAR1 = ['fname','Foolname','Baremail','foo.com'];
  • 6 Split on multiple characters 多种字符分割

    我们有这么一个字符串”fname=Foo&lname=Bar&email=foo@bar.com”我们既想用“=”分割,也想 用“&”分割。怎么做到呢?

use Data::Dumper;
my $str='fname=Foo&lname=Bar&email=foo@bar.com';
#注意这里是单引,若是双引号 foo@bar.com打印出来就是foo.com  下面同理
my @array=split/[=&]/,$str;
print Dumper(\@array);result:
$VAR1 = ['fname','Foo','lname','Bar','email','foo@bar.com'];;当然,如果我们知道这些是键-值对,那么我们可能希望将结果分配给哈希而不是数组use Data::Dumper;
my $str='fname=Foo&lname=Bar&email=foo@bar.com';
my %array=split /[=&]/,$str;
print Dumper(\%array);$VAR1 = {'lname' => 'Bar','fname' => 'Foo','email' => 'foo@bar.com'};
  • 7 Split on empty string 空字符串分割
use Data::Dumper qw(Dumper);my $str = "Hello World";
my @chars = split //, $str;
print Dumper \@chars;result:
$VAR1 = ['H','e','l','l','o',' ','W','o','r','l','d'];

Beware of regex special characters
A common pitfall with split, especially if you use a string as the separator (split STRING, STRING) as in split ‘;’, $line; is that even if you pass the first parameters as a string it still behaves as a regex. So for example

split '|', $line;   等价于   split /|/, $line;

and both will split the string character by character. The right way to split on a pipe | character is to escape the special regex character:

split /\|/, $line;

Perl split函数相关推荐

  1. Perl split字符串分割函数用法指南

    本文和大家重点讨论一下Perl split函数的用法,Perl中的一个非常有用的函数是Perl split函数-把字符串进行分割并把分割后的结果放入数组中.这个Perl split函数使用规则表达式( ...

  2. php中explode的是什么类型的_PHP中explode函数和split函数的区别小结

    一.前言 之所以做这个,是因为这两个函数的作用很像,都是把字符串转换成数组. 二.explode 从下面的例子可以看出,生成的数组是有对应的顺序的. $pizza = "piece1 pie ...

  3. OpenCV代码提取:merge/split函数的实现

    对OpenCV中的merge/split函数进行了实现,经测试,与OpenCV3.1结果完全一致. merge实现代码merge.hpp: // fbc_cv is free software and ...

  4. 技术图文:举例详解Python中 split() 函数的使用方法

    背景 这篇文章主要介绍Python中的split()函数的使用方法,split()函数通常用于将字符串切片并转换为列表,需要的朋友可以参考一下. 技术分析 Python中有split()和os.pat ...

  5. pandas使用split函数将dataframe中的特定列表字段(list column)裂变为多个数据列并拼接到原dataframe中

    pandas使用split函数将dataframe中的特定列表字段(list column)裂变为多个数据列并拼接到原dataframe中(splitting column of lists into ...

  6. R语言split函数、unsplit函数按组拆分数据、合并数据实战

    R语言split函数.unsplit函数按组拆分数据.合并数据实战 目录 R语言split函数.unsplit函数按组拆分数据.合并数据实战 #基本语法

  7. Python使用numpy函数vsplit垂直(行角度)拆分numpy数组(返回拆分后的numpy数组列表)实战:垂直拆分二维numpy数组、split函数垂直拆分二维numpy数组

    Python使用numpy函数vsplit垂直(行角度)拆分numpy数组(返回拆分后的numpy数组列表)实战:垂直拆分二维numpy数组.split函数垂直拆分二维numpy数组 目录

  8. Python使用numpy函数hsplit水平(按列)拆分numpy数组(返回拆分后的numpy数组列表)实战:水平(按列)拆分二维numpy数组、split函数水平(按列)拆分二维numpy数组

    Python使用numpy函数hsplit水平(按列)拆分numpy数组(返回拆分后的numpy数组列表)实战:水平(按列)拆分二维numpy数组.split函数水平(按列)拆分二维numpy数组 目 ...

  9. json数据解析_VBA 实践指南 -- Split函数解析Json数据

    什么是JSON? JSON(JavaScript Object Notation) 是一种及其轻量级的数据交换格式,它是 ECMAScript (欧洲计算机协会制定的JavaScript规范)的一个子 ...

最新文章

  1. Briefings in Bioinformatics:微生物基因组学和功能基因组学相关软件和数据库的研究进展
  2. 用RSA实现Web单点登录密码的加密传输
  3. 1、excel常用技能(数据分列、数据快速浏览、转置、选择性粘贴运算、绘制对角线、单元格内换行、插入注解文字或图片)
  4. solidity编码规范
  5. CF891C-Envy【可撤销并查集】
  6. Qt文档阅读笔记|Qt工作笔记-setupUi官方解析与实例(widgets中界面与业务分离)
  7. magic_quotes_gpc合magic_quotes_runtime的区别!
  8. 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_03 斗地主案例(单列)_1_斗地主案例的需求分析...
  9. OpenStack 已死?
  10. Vue.js 学习笔记 十二 Vue发起Ajax请求
  11. 關於GoogleUpdate.exe
  12. mysql text取出乱码_关于delphi2010读取MySQL数据库TEXT类型乱码的解决方案
  13. Python版本选择
  14. SQL server增删改查
  15. 从创业者角度看《印度合伙人 Padman》后的一点感受
  16. 如何使用python将数据写入txt文件
  17. mysql rownum写法_mysql类似oracle rownum写法实例详解
  18. pdf签名无效解决办法_谁告诉你PDF不能修改了?我不仅可以直接编辑,还能随便转化格式!...
  19. session的钝化和session的活化(序列化和反序列化)
  20. 【集合论】序关系 ( 偏序关系中八种特殊元素 | ① 最大元 | ② 最小元 | ③ 极大元 | ④ 极小元 | ⑤ 上界 | ⑥ 下界 | ⑦ 最小上界 上确界 | ⑧ 最小下界 下确界 )

热门文章

  1. 「敏捷模型」敏捷架构:规模化敏捷开发的策略
  2. windows的navicat 连接 linux的mysql服务器问题汇总
  3. 华为开发者大会2021鸿蒙系统,鸿蒙2.0来了!华为开发者大会HDC 2020宣布
  4. 教你代码实现抢红包功能
  5. 2020-01-25
  6. linux中sl是什么命令,都知道linux中的ls命令,但是你知道sl命令是什么作用吗?...
  7. 大学三年如何使用计算机论文,大学计算机导论论文3000字.docx
  8. html5 驾考 答题样式,驾考在线答题
  9. 安装bitnami-redmine
  10. 怎么利用群控解决问题