检查|的发生在复杂的字符串中

时间:2015-11-09 09:50:11

标签: python perl grep awk regex

基本要求是我需要在NAXSI网络应用防火墙白名单的|中找到BasicRule的出现次数

BasicRule  wl:1015 "mz:$URL:/js/));Nt.optgroup=Nt.option,Nt.tbody=Nt.tfoot=Nt.colgroup=Nt.caption=Nt.thead,Nt.th=Nt.td,v.support.htmlSerialize||(Nt._default=[1,|URL";
由于||正则表达式

中的$URL

是无效规则

BasicRule  wl:1015 "mz:$URL:/js/));Nt.optgroup=Nt.option,Nt.tbody=Nt.tfoot=Nt.colgroup=Nt.caption=Nt.thead,Nt.th=Nt.td,v.support.htmlSerialize(Nt._default=[1,|URL";

有效

NAXSI白名单具有https://github.com/EmirWeb/parchment

中所述的语法

egrep / sed / awk / perl / python中检查此条件是否匹配的简便方法是什么?

1 个答案:

答案 0 :(得分:1)

尝试在您要查找的管道 | 前放一个反斜杠 \

例如,egrep '\|\|'将匹配您的无效规则示例,但不符合您的有效规则示例。

注意基本和扩展的正则表达式(BRE和ERE),您需要反ERE的反斜杠,但不需要BRE。 grep使用BRE,egrep和awk以及python和perl使用ERE就管道字符而言,sed使用BRE,除非你拥有并使用-r选项进行ERE。