Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex I';我使用Perl从以下文本数据(如下所示的文本:)中提取数据,我需要过滤掉换行符上的数据,但它不';行不通_Regex_Perl - Fatal编程技术网

Regex I';我使用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

我正在使用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 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问题,你会遇到很多人,他们不知道很久以前在某个地方复制了什么,并基于这种无知而投票否决。