PHP 文件中的空格有时会出现问题,因此我尝试查找符合常见问题标准的文件。我试图递归地查找具有以下一个或两个条件的所有文件:
1) 不以 a 开头<
or #
特点。
and/or
2) 不以a结尾>
字符,除非它确实以右大括号结尾,后跟任意数量的换行符。
我认为第一个条件是:$[^<#]
我认为第二个条件是:[ [^>^] | [}\n*^]]
但是,请注意,在我天真的正则表达式中$
and ^
代表文件的开始和结束,而不是文件中任何行的开始和结束。即使有了这些,假设它们是正确的,我将如何组合它们?像这样吗?
[$[^<#]] | [[ [^>^] | [}\n*^]]]
然后,将它们放入 grep 中:
grep -r [$[^<#]] | [[ [^>^] | [}\n*^]]] *
显然,这是行不通的(tm)。有人可以教我如何纠正错误吗?谢谢。
这是一个很好的文件:
<?php
?>
也是这样的:
<?php
function someFunc(){
}
这也很好:
#!/usr/bin/php -q
<?php
?>
领先的 HTML 就可以了:
<html>
<?php
echo '</html>';
?>
尾随 HTML 也很好:
<?php
echo '<html>';
?>
</html>
这很糟糕(前导换行符):
<?php
?>
这也很糟糕(前导空格):
<?php
?>
这也很糟糕(尾随换行符):
<?php
?>
很快就抛出了一个表情,我认为这符合你的要求。现在已经很晚了,出于某种原因我在 stackoverflow 上。无论如何,我希望我能满足您的要求。
试试这个正则表达式/\A(?:\s+.*>|[^<#].*>\s*|<.*>\s+)\Z/s
。这里解释一下:http://regex101.com/r/cT7eY5 http://regex101.com/r/cT7eY5
我希望这有帮助。如果我对您有任何误解,请澄清,我会尽力调整表达方式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)