我有php文件,我想删除结束标记(?>),但只有当它是最后一个结束标记并且没有任何内容后。使用perl正则表达式关闭php标签
<?php
//some code
?>
<?php
//some other code
?> // <- this and only this should be removed
我已经试过模式的/(\ S * \> \ S *?)$ // s'和它的几个突变,但没有成功:他们删除所有出现的>,打破?代码,我不知道如何匹配EOF。 (是的,我知道一个解决方法:使用例如tail -1
来检查文件的最后一行,但它会使我的整个代码格式化脚本变得复杂,所以如果问题可以通过正确构造的正则表达式来解决,那将是很好的)
你的正则表达式应该工作 - 但只有当你阅读整个文件内容到一个变量 - 然后解析它。如果你使用'perl -p -i -e's /(\ s * \?> \ s *)$ //'filename.php',那么每行都会被一次处理一个。显然,这将剥离所有事件。 –