How to replace multiple any-character (including newline) in Perl RegEx?
这是MyTextString.txt的简化描述:
注意:BlaBla代表任何字符,包括换行符。
START BlaBla-In END BlaBla-Out-Between START BlaBla-In END BlaBla-Out-Between START BlaBla-In END BlaBla-Out-Between START BlaBla-In END ...
我正在寻找删除END和START(BlaBla-Out-Between)之间的文本,结果如下:
START BlaBla-In END newline START BlaBla-In END newline START BlaBla-In END newline START BlaBla-In END ...
我有一个perl文件changes.pl:
我应该使用这个CMD线执行我的替换:
1 | perl -i.bak -p changes.pl My/File/Directory/MyTextString.txt |
注意:changes.pl和CMD行正如本问题中所述与其他RegEx查找和替换字符串一起运行良好。
但是使用此RegEx字符串,MyTextString.txt不会发生任何修改:
1 2 |
我认为关于我的正则表达式语法的每一件事都可以,因为它在regex 101测试器上运行良好。
我正在寻找使用提到的changes.pl和CMD行匹配和替换任何字符(包括换行符)。 简单地说,我正在寻找用换行替换BlaBla-Out-Between。
在进行替换之前,您需要将整个文件粘贴到字符串中。
这意味着替换
$2/sg
要粘贴文件,您可以指定八进制
1 | perl -0777 -p -i.bak changes.pl MyTextString.txt |
来自perlrun:
-0[octal/hexadecimal]
specifies the input record separator ($/ ) as an octal or hexadecimal number. If there are no digits, the null
character is the separator. Other switches may precede or follow the
digits. ... The special value 00 will cause Perl to slurp files in paragraph mode. Any value 0400 or
above will cause Perl to slurp files whole, but by convention the
value 0777 is the one normally used for this purpose.