如何使用VB.NET从JSON文件中提取仅IPv4地址?
当然可以用VB.NET完成这个需求!下面是一套完整的实现方案,完全不依赖任何外部工具,直接从JSON内容里提取并过滤出IPv4地址。
实现思路
核心步骤很清晰:
- 获取JSON文件内容(支持本地文件或远程URL)
- 用正则表达式精准匹配所有IPv4地址
- 对匹配结果去重、整理
- 输出或保存最终结果
完整代码示例
Imports System Imports System.Net.Http Imports System.Text.RegularExpressions Imports System.Linq Imports System.IO Module IPAddressExtractor Sub Main() ' 替换为你的JSON文件路径或远程URL,例如本地路径:"C:\data\example.json" 或远程URL:"https://xxx/raw.json" Dim jsonSource As String = "你的JSON源地址" Dim ipv4List As IEnumerable(Of String) = Nothing Try ' 1. 读取JSON内容 Dim jsonContent As String = GetContentFromSource(jsonSource) ' 2. 正则匹配IPv4地址(仅识别合法的IPv4格式) Dim ipv4Regex As New Regex( "\b(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b", RegexOptions.IgnoreCase Or RegexOptions.Multiline ) ' 提取所有匹配项并去重 ipv4List = ipv4Regex.Matches(jsonContent).Cast(Of Match)().Select(Function(m) m.Value).Distinct() ' 3. 输出结果到控制台 Console.WriteLine("提取到的IPv4地址:") For Each ip As String In ipv4List Console.WriteLine(ip) Next ' 可选:将结果保存为每行一个IP的文本文件 ' File.WriteAllLines("Extracted_IPv4_List.txt", ipv4List) Catch ex As Exception Console.WriteLine($"运行出错:{ex.Message}") End Try End Sub ''' <summary> ''' 自动识别并读取本地文件或远程URL的内容 ''' </summary> ''' <param name="source">本地文件路径或远程URL</param> ''' <returns>内容字符串</returns> Private Function GetContentFromSource(source As String) As String If source.StartsWith("http://") OrElse source.StartsWith("https://") Then ' 远程URL场景:使用HttpClient异步读取内容 Using client As New HttpClient() Return client.GetStringAsync(source).Result End Using Else ' 本地文件场景:直接读取文本内容 Return File.ReadAllText(source) End If End Function End Module
代码细节解释
- 内容读取适配:
GetContentFromSource函数会自动判断输入是本地文件还是远程URL,分别采用对应的读取方式,兼顾两种使用场景。 - 精准IPv4匹配:使用标准的IPv4正则表达式,只会识别
0.0.0.0到255.255.255.255范围内的合法地址,排除格式无效的伪IP。 - 去重处理:通过
Distinct()方法自动剔除重复的IP地址,确保最终结果没有冗余项。 - 异常防护:包裹了Try-Catch块,能捕获网络请求失败、文件不存在等异常情况,让程序运行更稳定。
扩展说明
- 如果需要处理本地JSON文件,直接把
jsonSource替换为你的本地文件路径即可。 - 若要生成和你期望格式一致的结果文件,取消注释代码里的
File.WriteAllLines语句,会自动创建每行一个IP的文本文件。
内容的提问来源于stack exchange,提问作者ctOS Lab
相关产品推荐
相关产品推荐

