我需要在我们的一些 Visual Studio 2010 解决方案中查找所有硬编码的 IP 地址。
如何使用 Visual Studio 2010 中的标准“查找”实用程序 (Ctrl+Shift+F) 执行此操作?
不幸的是,Visual Studio 2010 的“在文件中查找”功能中的正则表达式搜索与 Perl5 不兼容。此正则表达式模式将匹配以
x.x.x.x
样式(即 IPv4 样式地址)指定的任何数字:
[0-9]#\.[0-9]#\.[0-9]#\.[0-9]#
根据文档,似乎没有一种方法可以指定模式必须重复1到3次,而这正是您真正想要的IPv4样式八位字节,因此上述模式将还匹配版本号,如
2.0.20505.0
.
但是,您可以通过将八位位组中的位数明确指定为单独的组来将它们限制为 3,尽管这样会变得非常冗长:
([0-9]|([0-9][0-9])|([0-9][0-9][0-9]))\.([0-9]|([0-9][0-9])|([0-9][0-9][0-9]))\.([0-9]|([0-9][0-9])|([0-9][0-9][0-9]))\.([0-9]|([0-9][0-9])|([0-9][0-9][0-9]))
这仍然会匹配版本号的每个“部分”不超过 3 位的版本号,例如
4.0.0.0
,但它也会匹配 IPv4 地址,例如 11.2.123.21
。
编写 IPv6 地址的格式比 IPv4 更灵活,虽然可能可以将它们与 Visual Studio 2010 正则表达式进行匹配,但它会非常复杂。 :-)
对于 Visual studio 2017 这个正则表达式对我来说效果很好:
((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)
我发现这可以在 vscode 中找到所有 4 个八位字节:
\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b
, 来源 Oreilly 参考页面
确保在搜索时选择正则表达式 (.*) 选项而不是大写/小写。