Perl:如何在未加引号的字符实例上拆分字符串
Perl: How can I split a string on an unquoted instance of a character
在 perl 中,我怎样才能只沿着不带引号的定界符拆分字符串?即以下字符串:
my $line = '"a quoted, comma", word1, word2';
应该生成一个包含以下元素的数组:
"a quoted, comma"
word1
word2
您可以使用 parse_line()
个 Text::ParseWords。
use Text::ParseWords;
my $line = '"a quoted, comma", word1, word2';
my @parsed = parse_line(',', 1, $line);
# print "@parsed\n"; # this will print in single line
# To print in new line
foreach (@parsed)
{
print "$_\n";
}
输出:
"a quoted, comma"
word1
word2
您可以使用简单的替代正则表达式模式来做到这一点
use strict;
use warnings;
use 5.010;
my $line = q<"a quoted, comma", word1, word2>;
my @words = $line =~ / (?: "[^"]*" | [^,] )+ /xg;
say for @words;
输出
"a quoted, comma"
word1
word2
在 perl 中,我怎样才能只沿着不带引号的定界符拆分字符串?即以下字符串:
my $line = '"a quoted, comma", word1, word2';
应该生成一个包含以下元素的数组:
"a quoted, comma"
word1
word2
您可以使用 parse_line()
个 Text::ParseWords。
use Text::ParseWords;
my $line = '"a quoted, comma", word1, word2';
my @parsed = parse_line(',', 1, $line);
# print "@parsed\n"; # this will print in single line
# To print in new line
foreach (@parsed)
{
print "$_\n";
}
输出:
"a quoted, comma"
word1
word2
您可以使用简单的替代正则表达式模式来做到这一点
use strict;
use warnings;
use 5.010;
my $line = q<"a quoted, comma", word1, word2>;
my @words = $line =~ / (?: "[^"]*" | [^,] )+ /xg;
say for @words;
输出
"a quoted, comma"
word1
word2