At first glance, I concede that this question looks like a duplicate of this question and any other related to it:

事实上这个问题的答案几乎可以回答我的问题, but not fully.

我遇到的问题代码,但最成功的代码如下所示:

private string RemoveIPv6(string sInput)

{

string pattern = @"(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))";

//That is one looooong regex! From: https://stackoverflow.com/a/17871737/3472690

//if (IsCompressedIPv6(sInput))

// sInput = UncompressIPv6(sInput);

string output = Regex.Replace(sInput, pattern, "");

if (output.Contains("Addresses"))

output = output.Substring(0, "Addresses: ".Length);

return output;

}

我在这个答案提供的正则表达式模式中遇到的问题是David M. Syzdek's Answer,它没有投掷它 .

我正在使用正则表达式模式主要用空格或空值替换字符串中的IPv6地址 .

例如,

Addresses: 2404:6800:4003:c02::8a

以及...

Addresses: 2404:6800:4003:804::200e

最后......

Addresses: 2001:4998:c:a06::2:4008

所有这些都没有被正则表达式完全匹配,或者未能完全匹配 .

正则表达式将返回字符串的其余部分,如下所示:

Addresses: 8a

Addresses: 200e

Addresses: 2:4008

可以看出,由于残余物所采用的格式不同,它已经留下了难以检测和删除的IPv6地址的残余 . 下面是正则表达式模式本身,以便更好地分析:

(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))

因此, my question is ,如何更正此正则表达式模式以使其匹配,从而允许从不仅包含IPv6地址本身的字符串中完全删除任何IPv6地址?

Alternatively ,我上面提供的代码片段如何更正以提供所需的结果?

对于那些可能想知道的人,我从nslookup命令的StandardOutput获取字符串,并且IPv6地址将始终不同 . 对于上面的示例,我从"google.com"和"yahoo.com"获得了这些IPv6地址 .

我没有使用内置函数来解析DNS条目是有充分理由的,我认为暂时不重要,因此我使用的是nslookup .

至于调用该函数的代码,如果需要,如下所示:(它本身也是另一个函数/方法,或者说是其中一部分)

string output = "";

string garbagecan = "";

string tempRead = "";

string lastRead = "";

using (StreamReader reader = nslookup.StandardOutput)

{

while (reader.Peek() != -1)

{

if (LinesRead > 3)

{

tempRead = reader.ReadLine();

tempRead = RemoveIPv6(tempRead);

if (tempRead.Contains("Addresses"))

output += tempRead;

else if (lastRead.Contains("Addresses"))

output += tempRead.Trim() + Environment.NewLine;

else

output += tempRead + Environment.NewLine;

lastRead = tempRead;

}

else

garbagecan = reader.ReadLine();

LinesRead++;

}

}

return output;

更正的正则表达式应该只允许删除IPv6地址,并保持IPv4地址不变 . 将传递给正则表达式的字符串不会单独包含IPv6地址,并且几乎总是包含其他详细信息,因此,地址显示在哪个索引上是不可预测的 . 由于某些原因,正则表达式也会在第一个出现的IPv6地址之后跳过所有其他IPv6地址,应该注意 .

抱歉,如果有任何遗漏的细节,我会尽力将它们包括在警报中 . 如果可能的话,我也更喜欢使用代码示例,因为我几乎没有关于正则表达式的知识 .

ipv6正则表达式 java_正则表达式,匹配所有有效格式的IPv6地址相关推荐

  1. 正则表达式—匹配除了 png格式的照片,并消除英文大小问题

    package com.lwm.JinBoZhuJieTest;import java.util.regex.Matcher; import java.util.regex.Pattern;// 匹配 ...

  2. .net使用正则表达式校验、匹配字符工具类

    开发程序离不开数据的校验,这里整理了一些数据的校验.匹配的方法: 1 /// <summary> 2 /// 字符(串)验证.匹配工具类 3 /// </summary> 4 ...

  3. php验证年月日的正则表达式,关于正则表达式:在php中验证日期格式

    我正在尝试使用PHP验证日期. 我希望以下格式有效: d/m/yy d/m/yyyy dd/m/yy dd/m/yyyy d/mm/yy d/mm/yyyy dd/mm/yy dd/mm/yyyy 我 ...

  4. js 正则表达式奇偶字符串替换_Python中的正则表达式及其常用匹配函数用法简介...

    今 日 鸡 汤 此曲只应天上有,人间难得几回闻. /1 前言/ 这次给大家主要是介绍Python中的正则表达式,及其相关函数的基本使用方法,并且捎带一些正则表达式给我们带来的便利. /2 简介/ Py ...

  5. python中正则表达式的默认匹配方式为_Python模式匹配与正则表达式

    1.1 不用正则表达式来匹配文本 假设我希望在一个字符串中找到电话号码,电话号码的格式为三个数字,一个短横线,四个数字,一个短横线,四个数字 比如:131-3310-5293和132-2670-986 ...

  6. JS正则表达式的分组匹配

    原文地址: JS正则表达式的分组匹配 什么是分组 通俗来说,我理解的分组就是在正则表达式中用()包起来的内容代表了一个分组,像这样的: var reg = /(\d{2})/ reg.test('12 ...

  7. Nginx正则表达式与location匹配简介

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一.nginx rewrite概述 1.概述 2. 跳转场景​ 3. 跳转实现 4. rewrite实际场景 二.nginx ...

  8. Nginx之正则表达式、location匹配简介以及rewrite重写

    目录 一.Nginx 正则表达式 二.location 匹配简介 1.匹配规则格式 ①.精准匹配 ②.一般匹配 ③.正则匹配 2.常用的匹配规则 3.匹配的优先级 4.示例 5.实际网站使用中,至少有 ...

  9. 正则表达式:邮箱匹配

    格式概述 邮箱地址符合"名称@域名"规则.字符"@"在邮箱地址的"名称"和"域名"之间,邮箱地址名称只允许由英文字母.数 ...

  10. Python正则表达式及常用匹配

    1 正则表达式对象 re.RegexObject re.compile() 返回 RegexObject 对象. re.MatchObject group() 返回被 RE 匹配的字符串. start ...

最新文章

  1. S210-设置通过X130-Profinet口进行配置
  2. bzoj 4195: [Noi2015]程序自动分析
  3. 在银行存款被吞了,怎么能快速解决?
  4. java中的规范是什么意思_Java中的异常规范有什么好处?
  5. java虚拟机-程序计数器PC Register
  6. java中的工厂模式_java中工厂模式详解和使用方法
  7. 关于larbin的编译
  8. 参加软件测试工程师面试前,这些内容你一定要准备
  9. 程序员想创业首先要突破自己三关(转)
  10. myeclipse 创建 maven项目的时候出现:invalid project description 解决方法
  11. C# DES 加解密
  12. python实用例子_Python实用案例 - 随笔分类 - 一入测试深似海 - 博客园
  13. JS利用canvas画布功能画时钟
  14. ios 二维码扫描(微信二维码扫描音效)
  15. python自动轨迹绘制七边形_【高德地图API】从零开始学高德JS API(三)覆盖物
  16. idea设置单行注释格式(包括配置文件)
  17. 史上最难oracle数据库练习题(附答案)
  18. 什么是编码?什么是解码?
  19. 单片机串口通讯RXD与TXD如何对接详解
  20. Angular CLI ng常用命令整理

热门文章

  1. 部署企业级项目管理系统(蝉道)
  2. 医院计算机应用,解读计算机应用技术对医院信息化的影响
  3. word表格边框消失怎么办_为什么我的word表格没了边框 - 卡饭网
  4. 静态代理和动态代理的区别和联系
  5. 解决ROS编译时opml库找不到
  6. xdb 服务_[20200115]监听中没有xdb服务.txt
  7. SQL 求同比 环比
  8. 【小程序】小游戏开发工具详解(下)
  9. c语言json数据解析,C语言库函数解析JSON文件
  10. html 表格单元格点击事件,bootstrap table onClickCell点击单元格事件