如何在字符串之间嵌入换行符的双引号之间提取字符串?

时间:2018-02-15 11:06:07

标签: regex perl

我想在"引号之间提取文本并附加它们。忽略字符串中嵌入的换行符。

到目前为止我所拥有的是:

$whole_text="\"Ankit Stackoverflow is \n awesome\" \"a\" asd asd \"he\nllo\"\n";

while ($whole_text=~ /(.*?)"(.*?)"(.*?)/m)
{ 
    $whole_text=~ s/(.*?)"(.*?)"(.*?)/$2/m;
}

预期结果:

Ankit Stackoverflow is awesome and hello

1 个答案:

答案 0 :(得分:-1)

你在正则表达式上使用了错误的修饰符。 /m处理字符串有多行,您实际想要使用/s更改“。”匹配任何字符,包括\n

更改此内容实际上并不能获得您想要的输出,因为您反复应用转换,它也会删除任何过去引用的部分。您还想使用/g修饰符来查找所有可能的匹配项,然后只应用一次正则表达式。

use strict;

my $whole_text="\"Ankit Stackoverflow is \n awesome\" \"a\" asd asd \"he\nllo\"\n";

$whole_text =~ s/(.*?)"(.*?)"(.*?)/$2/sg;

然后如果你想摆脱\n你也需要。

$whole_text =~ s/\n//sg;