如何匹配模式并从多行字符串中删除整行

Posted

技术标签:

【中文标题】如何匹配模式并从多行字符串中删除整行【英文标题】:How do I match pattern and delete the whole line from multiple lines string 【发布时间】:2021-11-15 13:24:27 【问题描述】:

我有这个多行字符串

IP 5002

<IP 5002
<

abcbbdbdbd
abcbbdbdbd
abcbbdbdbd
abcbbdbdbd
;

我正在尝试匹配“

IP 5002

<

abcbbdbdbd
abcbbdbdbd
abcbbdbdbd
abcbbdbdbd
;

我只删除了

my $str = "sdasdasd
<IP 5002
<

dadas
dasdasd
dasdsada

";

$str =~ s/<IP.*//; 

print "\n" . $str . "\n";

谁能帮忙,搜索结果主要涉及通过不从文件中读取行并写入新文件来删除行。我试图从一个字符串中做到这一点。

谢谢

【问题讨论】:

【参考方案1】:

你可以删除换行符:

$str =~ s/<IP.*\n//;

如果你想避免贪婪匹配:

$str =~ s/<IP.*?\n//;

【讨论】:

如果我们提到贪婪(为什么不提到),那么我还要声明 . 与没有修饰符 /s 的换行符不匹配(没有它,贪婪在这里无关紧要) .

以上是关于如何匹配模式并从多行字符串中删除整行的主要内容,如果未能解决你的问题,请参考以下文章