如何使用使用perl的matlab脚本替换多行文本

时间:2014-08-15 15:40:21

标签: regex perl matlab multiline

我遇到了一个matlab脚本,该脚本使用名为replaceinfile.m的perl脚本,该脚本使用

perlCmd = sprintf('"%s"',fullfile('/usr/bin/perl'));
perlstr = sprintf('%s -i.bak -pe"s/%s/%s/g" "%s"', perlCmd, str1, str2,infile);

并希望使用replaceinfile函数替换多行文本,例如:

Line1
Line2
Line3
Line4

变为:

Line1
Line4

我试过

replaceinfile('Line2\r\nLine3\r\n','',inputfile,outputfile)

因为有CR LF'我的输入文件中的行结尾但这不起作用,我无法弄清楚正确的正则表达式是什么。

有什么建议吗?谢谢!

2 个答案:

答案 0 :(得分:2)

您应该使用\R来匹配所有Unicode换行序列。看到这个正则表达式:

Line[23]\R

这是regex demo

答案 1 :(得分:0)

以下内容应该有效

perlstr = sprintf('%s -i.bak -pe"undef $/; s/%s/%s/g" "%s"', perlCmd, str1, str2,infile);

\r更改为\r?可能是个好主意,然后它也适用于仅LF文件。

请参阅http://www.perlmonks.org/?node_id=17947