Regex I';我使用Perl从以下文本数据(如下所示的文本:)中提取数据,我需要过滤掉换行符上的数据,但它不';行不通
我正在使用Perl从以下文本数据中提取/重新格式化文本:Regex I';我使用Perl从以下文本数据(如下所示的文本:)中提取数据,我需要过滤掉换行符上的数据,但它不';行不通,regex,perl,Regex,Perl,我正在使用Perl从以下文本数据中提取/重新格式化文本: Bryggkaffe 6 st 27,67 kr 166,03 kr Blandfärs "Behöver ca 3 kg köttfärs. sv" 3 kg 66,69 kr 200,07 kr Banan EKO 6 kg 22,54 kr 135,23 kr 我想要 Blandfärs "Behöver ca 3 kg köttfärs. sv" 3 kg 66,69
Bryggkaffe 6 st 27,67 kr 166,03 kr
Blandfärs
"Behöver ca 3 kg köttfärs. sv" 3 kg 66,69 kr 200,07 kr
Banan EKO 6 kg 22,54 kr 135,23 kr
我想要
Blandfärs
"Behöver ca 3 kg köttfärs. sv" 3 kg 66,69 kr 200,07 kr
成为
Blandfärs 3 kg 66,69 kr 200,07 kr
这两行之间有一些内容,但是用Perl无法捕获任何建议(已经使用/测试过了)。\f\r\n[x0A][x0D])?您可以尝试下面的Perl单行命令
$ cat file
Bryggkaffe 6 st 27,67 kr 166,03 kr
Blandfärs
"Behöver ca 3 kg köttfärs. sv" 3 kg 66,69 kr 200,07 kr
Banan EKO 6 kg 22,54 kr 135,23 kr
$ perl -0777pe 's/\n+"[^"]*"//g' file
Bryggkaffe 6 st 27,67 kr 166,03 kr
Blandfärs 3 kg 66,69 kr 200,07 kr
Banan EKO 6 kg 22,54 kr 135,23 kr
或
perl -00pe 's/\n+"[^"]*"//g' file
您可以使用简单的一行程序:
perl -p00e's/\R"[^"]*"//' file.txt
如果希望“安全”删除带引号的字符串,可以使用标准模块生成regexp:
perl -MText::Balanced=gen_delimited_pat -p00e'BEGIN{$r=gen_delimited_pat(q{"})}s/\R$r//' file.txt
或插入gen\u delimited\u pat的生成(和简化)输出
perl -p00e's/\R"[^\\"]*(?:\\.[^\\"]*)*"//' file.txt
或者perl-0777pe的/[\r\n]*\n[\r\n]*“[^”]*“//g”文件
或者perl-00pe的/\n+“[^”]*“//g”文件
@Hynek Pichi Vychodil这就是为什么我在评论中添加了一个替代选项。我必须查找它,但是-0777
选项是我的惯例。它将输入分隔符设置为一个不可能的值,这迫使perl在一行中实现整个输入。你有没有费心描述一下这个工作示例的错误呢。我发现,通过这些混合的regex/perl问题,你会遇到很多人,他们不知道很久以前在某个地方复制了什么,并基于这种无知而投票否决。