我正在寻找一种解决方案来拆分包含以下格式的文本的字符串:
"abcd efgh 'ijklm no pqrs' tuv"
Run Code Online (Sandbox Code Playgroud)
这将产生以下结果:
['abcd', 'efgh', 'ijklm no pqrs', 'tuv']
Run Code Online (Sandbox Code Playgroud)
换句话说,除非在单个带引号的字符串中,否则它将按空格分割.我认为可以使用.NET regexps使用"Lookaround"运算符,特别是平衡运算符.我不太了解Perl.
Sin*_*nür 15
#!/usr/bin/perl
use strict; use warnings;
use Text::ParseWords;
my @words = parse_line('\s+', 0, "abcd efgh 'ijklm no pqrs' tuv");
use Data::Dumper;
print Dumper \@words;
Run Code Online (Sandbox Code Playgroud)
输出:
C:\Temp> ff
$VAR1 = [
'abcd',
'efgh',
'ijklm no pqrs',
'tuv'
];
您可以查看源代码Text::ParseWords::parse_line以查看使用的模式.