在perl中,拆分为什么在管道(|
)处中断。
我有要在"
和
my @temp1 = split(/\"/,$line);
,但这也会在管道(|
)处中断。喜欢输入
my_string|is"_ok
输出为
mystring , is, _ok
为什么? 为什么不
mystring|, is, _ok
答案 0 :(得分:3)
您的程序似乎在其他地方包含错误。
运行以下脚本:
use strict; use warnings;
my $line = 'my_string|is"_ok';
print "Source: $line\n";
my @temp1 = split(/"/, $line);
print "Result 1:\n";
my $index;
for my $elem (@temp1) {
print ++$index, ": $elem\n";
}
@temp1 = split(/["|]/, $line);
print "Result 2:\n";
$index = 0;
for my $elem (@temp1) {
print ++$index, ": $elem\n";
}
您将获得下面给出的结果
Source: my_string|is"_ok
Result 1:
1: my_string|is
2: _ok
Result 2:
1: my_string
2: is
3: _ok
如您所见,该脚本包含match的2个变体:
要编写与双引号匹配的正则表达式,则无需 逃脱它。
请注意,在字符类([
和]
之间)中,您甚至
不需要退出竖线。
因此,为了使程序简单易读,请避免不必要的操作 反斜杠。