首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IP地址regex与编号列表

IP地址regex与编号列表
EN

Stack Overflow用户
提问于 2022-09-13 12:00:24
回答 1查看 56关注 0票数 -1

我正在使用Trellix DLP解决方案,并有IP地址分类,以阻止传出IP地址信息。

我的判断是\b(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\b

但是,这也会阻止具有4个级别编号列表的文档,例如:

代码语言:javascript
复制
 1.blah
    1.1 blah blah
           1.1.1 blah blah blah
                1.1.1.1 blah blah blah blah (DLP thinks this is an IP Address and block the document)

有没有办法绕过这件事。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-13 13:55:27

雷吉斯有时觉得自己有魔力,但不幸的是,他们不是。regex不能区分ip地址与编号的脚注或文章。

您可以尝试在regex中添加某种智能(可以说),但最终会出现假阳性/阴性。这种智能来自于检查先前或下一个字符。

如果您尝试这样做,那么开始使用一个只匹配有效ip地址的正则表达式( regex可以匹配300.1.2.3,这是无效的)

还要确定您想要避免的ip地址。因为如果您试图避免只使用私有ip地址,那么如果您设计了一个只匹配私有ip地址的正则表达式,那么获得假阳性的机会就会更少。

如果您试图获取任何ip地址,那么尝试避免匹配之前有4个或更多空格的匹配(或小于4和开始行)。这是为了尽量避免编号标题。

代码语言:javascript
复制
(?<!^\h)(?<!^\h\h)(?<!^\h\h\h)(?<!\h\h\h\h)\b(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\b

注意:使用m修饰符。如果不能指定标志,请尝试像这样使用regex:

代码语言:javascript
复制
(?m)(?<!^\h)(?<!^\h\h)(?<!^\h\h\h)(?<!\h\h\h\h)\b(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\b

注意:如果您的工具不支持\h,请将它们更改为[\t\p{Zs}][ \t]

您有一个非常基本的演示这里。请继续阅读,然后再把它用于制作:-)

当然,由于负查找通常不能是可变长度的(除非某些特定的编程语言/工具),所以在带有额外空格的负查找后面添加的情况越多,越有可能跳过这些文章,而不会得到假的否定。

当然,该工具还必须支持负查找。

您甚至可以将这两种情况结合起来:匹配172.x.x.x和192.x.x.x私有地址的regex (不包括10.x.x.x私有地址,因为它们很低),在这种情况下,它可能不会考虑额外的约束,或者任何其他具有额外约束的有效ip地址(比如空格)。

你有没有发现更多的假阳性?试着为他们制定类似的规则。例如,考虑到可以匹配这样的脚注:<<See 1.2.3.4>>*1.2.3.4。例如,尝试为以*开头或以>>结尾的类ip地址字符串添加异常。

总之:“你不能”,但如果你坚持或试图.

  • 根据您发现的假阳性,在正则表达式中添加额外的“逻辑”
  • 检查该工具是否缺少所需的regex功能(如正/负查找)
  • 逻辑可能非常特定于您在示例中指定的文档。如果有其他不同格式的文档,则可能无法为任何类型的文档提供通用解决方案。
  • 即使您只有一种类型的文档要检查,您可能仍然有假阳性/阴性,在这种情况下,转到步骤1并重复。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73702631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档