Regex 在perl中按空格分隔行,但忽略引号中的空格
我有这样一句话:Regex 在perl中按空格分隔行,但忽略引号中的空格,regex,perl,split,Regex,Perl,Split,我有这样一句话: A2 IDENT = 'THING1','THING2' A3 IDENT = 'G' A4 IDENT = 'SOME THING','ANOTHER THING' A2,IDENT,=,'THING1','THING2' A3,IDENT,=,'G' A4,IDENT,=,'SOME THING','ANOTHER THING' 我想得到这样的代币: A2 IDENT = 'THING1','T
A2 IDENT = 'THING1','THING2'
A3 IDENT = 'G'
A4 IDENT = 'SOME THING','ANOTHER THING'
A2,IDENT,=,'THING1','THING2'
A3,IDENT,=,'G'
A4,IDENT,=,'SOME THING','ANOTHER THING'
我想得到这样的代币:
A2 IDENT = 'THING1','THING2'
A3 IDENT = 'G'
A4 IDENT = 'SOME THING','ANOTHER THING'
A2,IDENT,=,'THING1','THING2'
A3,IDENT,=,'G'
A4,IDENT,=,'SOME THING','ANOTHER THING'
我可以在\s+
上进行拆分,然后在,
上进行拆分(以拆分最后一部分),但最后一部分中的空格会将其弄乱。使用strict;
use strict;
use warnings;
for my $line (<DATA>) {
my @fields = $line =~ /('.*?'|\S+),?/g;
print join(',', @fields), "\n";
}
__DATA__
A2 IDENT = 'THING1','THING2'
A3 IDENT = 'G'
A4 IDENT = 'SOME THING','ANOTHER THING'
使用警告;
对于我的$行(){
我的@fields=$line=~/('.'.'\S+),/g;
打印联接(“,”,@fields),“\n”;
}
__资料__
A2标识='THING1','THING2'
A3标识符='G'
A4标识=‘某件事’,‘另一件事’
使用:
注意:使用可以更容易地查看结果数组包含的内容
(?:\s+|,)(?=(?:[^']*'[^']*')*[^']*$)
您可以按此进行拆分,然后删除空拆分
。请参阅演示