我想在"
引号之间提取文本并附加它们。忽略字符串中嵌入的换行符。
到目前为止我所拥有的是:
$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
答案 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;