0

所以我一直在尝试构建一个可以检测端口号(0-65535)的正则表达式。我已经尝试了下面帖子中给出的那个:

正则表达式验证端口号

这个 :

^([0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$

在https://regex101.com/上进行测试时,上述方法似乎工作正常。

但是,当我尝试构建一个 yara 规则以使用与上述相同的模式检测这一点时,即使上述模式具有文档中所述的所有允许字符,它也不起作用:

https://yara.readthedocs.io/en/stable/writingrules.html#regular-expressions

4

2 回答 2

0

您的正则表达式具有开始 (^) 和结束点 ($) 检查。因此,只有当您的输入是端口号时,它才会起作用。如果您想匹配字符串中的端口号部分,这将不起作用。要对字符串进行此操作,请从正则表达式的起点和终点移除 ^ 和 $。

于 2020-06-09T06:17:41.787 回答
0

替换^和。$_\b

\b([0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])\b

\b是单词边界;[A-Za-z0-9_]单词字符 ( ) 和非单词字符(其他任何字符)之间的边界。该模式将匹配 0 到 65535 之间的数字,而周围没有任何数字或字母。

于 2020-06-10T10:43:10.873 回答