Jea*_*uys 0 regex perl split escaping
我的代码过去工作正常,现在它正在破碎.问题的减少如下:我想在分隔符处拆分源字符串(来自数据库,但这并不重要).分隔符不是固定的,而是用户提供的字符串.我曾经这样做过:
@results = split($splitString, $sourceStr);
Run Code Online (Sandbox Code Playgroud)
但是当用户要求加号(+)作为分隔符时,这会中断.这条消息有点神秘:
Quantifier follows nothing in regex; marked by <-- HERE in m/+ <-- HERE
Run Code Online (Sandbox Code Playgroud)
我的理解是它会中断,因为split不期望一个字符串,而是一个regexp.但是,我无法找到一种以有效方式逃避$ splitString的方法.这是我的玩具示例:
my $s = 'string 1 + $splitChar + string 2';
my $splitChar = "+";
my @result = split(/\\$splitChar/, $s);
print "num of results ".scalar(@result)."\n";
foreach my $value (@result) {
print "$value\n";
}
Run Code Online (Sandbox Code Playgroud)
但它根本没有分裂.我尝试了很多变化,但没有一个变化.请注意,用户指定的分隔符可能仅限于一个字符,但多字符解决方案会更好.
(是的,我可以编写自己专门的分割功能,但这不是重点).
($splitChar在单引号字符串示例中是故意的,我想这很清楚为什么).
Sin*_*nür 15
第一个参数split是一个模式:
#!/usr/bin/perl
use strict;
use warnings;
my $sep = '+';
my $source = 'one+two+three';
my @results = split /\Q$sep\E/, $source;
use Data::Dumper;
print Dumper \@results;
Run Code Online (Sandbox Code Playgroud)
另见perldoc -q "quote a variable".
| 归档时间: |
|
| 查看次数: |
1942 次 |
| 最近记录: |