关于正则表达式的一些澄清

时间:2017-09-26 11:54:07

标签: regex ubuntu grep

我使用grep正则表达式匹配超过150个字符的字符串,没有空格。 我在Ubuntu的命令行中使用的正则表达式是这样的:

选项1:

grep -rle '[^\ ]\{150,\}' --include=\*.php --exclude-dir=cache

1选项

grep -rl --include=\*.php --exclude-dir=cache '[^\ ]\{150,\}'

现在有了命令我得到了结果,但并不完全是我期望的结果, 例如,当我尝试

2选项

grep -rle 'base64_decode' --include=\*.php --exclude-dir=cache

我得到一个文件的结果列表say malicious.php 其内容如下:

'LqOC1ZYpuMOpuhuBTmNJrNmCKMiRkMQp68rRkMG2bfuaTmNJrNmpL8GKknNRb8QRAYy2K3PhHtEHt'.
'SNCLfOp68QsKjYpYZxz6ZisHDqaUea3AYF28Z7CK3PML1xc5ZYc'.
'A8WsKnNRLfQsAYyClpehHtEHDNNC0mPs68ipLYORYZWRL1rzKMYa5SgV5Zbn8MUlVZJBHmu'

我的问题是为什么这个文件的appsous.php没有列出regex option1和option2。 什么是正确的正则表达式列出的恶意.php指定大于n个字符数而没有空格。

1 个答案:

答案 0 :(得分:0)

对我来说,正确的是正则表达式如下所示,它只排除水平空间,但不排除垂直空间。

这实际上与问题中给出的字符串示例匹配。

grep -rle '[^\h]\{150,\}' --include=\*.php --exclude-dir=cache