如何在Perl中使用其他分隔符?

eve*_*box -3 regex perl

m!PATTERN!如果PATTERN包含 /字符,我可以使用.

我也可以这样使用split /PATTERN/,EXPR,LIMIT吗?

Zai*_*aid 6

简而言之,答案是肯定的.

试试看:

my @array = split m!/!, '1/2/3/4/5';
Run Code Online (Sandbox Code Playgroud)


ike*_*ami 5

的各种形式split实际上是:

  • split MATCHOP,EXPR,LIMIT
  • split PATTERN,EXPR,LIMIT
  • split MATCHOP,EXPR
  • split PATTERN,EXPR
  • split MATCHOP
  • split PATTERN
  • split

在哪里

  • MATCHOP 是匹配运算符(通常不会执行),并且
  • PATTERN 是一个返回以下值之一的表达式:
    • 由单个空格组成的字符串。
    • 编译的正则表达式模式
    • 字符串形式的正则表达式模式

所有这十个在功能上都是等效的:

$re = qr/\s+/;
$pat = '(?^u:\\s+)';

split /\s+/          Match operator
split m/\s+/         Match operator
split m!\s+!         Match operator

split qr/\s+/        Expression that returns a compiled regex pattern.
split qr!\s+!        Expression that returns a compiled regex pattern.
split $re            Expression that returns a compiled regex pattern.

split '(?^u:\s+)'    Expression that returns a stringified regex pattern.
split '(?^u:\\s+)'   Expression that returns a stringified regex pattern.
split "(?^u:\\s+)"   Expression that returns a stringified regex pattern.
split $pat           Expression that returns a stringified regex pattern.
Run Code Online (Sandbox Code Playgroud)