0 0

关于正则表达式的问题。10

3.0.0.0         3.255.255.255   美国 新泽西通用电气公司
4.0.0.0         4.9.255.255     美国  CZ88.NET
4.10.0.0        4.10.255.255    美国 新泽西州立大学
4.11.0.0        4.11.255.255    美国 夏威夷
4.12.0.0        4.19.77.255     美国  CZ88.NET
4.19.78.0       4.19.78.255     美国 西南政法大学
4.19.79.0       4.19.79.63      美国 Armed Forces Radio/Television
4.21.177.0      4.21.177.255    美国 西南政法大学
4.36.124.128    4.36.124.255    美国 Technical Resource Connections Inc
4.36.125.0      4.36.127.255    美国 坦帕大学
4.37.216.0      4.37.219.255    美国 德克萨斯女子大学
12.2.169.0      12.2.169.255    美国 Leepfrog Technologies
12.3.134.0      12.3.135.255    美国 Lycoming College
12.5.176.240    12.5.176.255    美国 Friends University
193.104.218.0   193.104.218.255 法国 College Des Ingenieurs
193.104.219.0   193.105.42.255  法国  CZ88.NET
193.105.43.0    193.105.52.255  法国 American University of Paris
12.6.230.0      12.6.231.255    美国 Marlboro College
12.11.139.0     12.11.139.255   美国 南佛蒙特学院
12.13.176.128   12.13.176.255   美国 Spelman College
12.16.216.0     12.16.219.255   美国 太平洋联合学院
12.16.220.0     12.19.229.255   美国 ATT用户
12.19.230.0     12.19.230.255   美国 Houghton College

将这四列数据用,号分隔开,最后一列英文名称保持原样(难点好像就是在这里)。

2008年8月15日 11:01

4个答案 按时间排序 按投票排序

0 0

不会 Python,用 Java 写了一个,参考一下吧。

public class Test {
    public static void main(String[] args) {
        String str =
            "3.0.0.0         3.255.255.255   美国 新泽西通用电气公司\n" +
            "4.0.0.0         4.9.255.255     美国  CZ88.NET\n" +
            "4.10.0.0        4.10.255.255    美国 新泽西州立大学\n" +
            "4.11.0.0        4.11.255.255    美国 夏威夷\n" +
            "4.12.0.0        4.19.77.255     美国  CZ88.NET\n" +
            "4.19.78.0       4.19.78.255     美国 西南政法大学\n" +
            "4.19.79.0       4.19.79.63      美国 Armed Forces Radio/Television\n" +
            "4.21.177.0      4.21.177.255    美国 西南政法大学\n" +
            "4.36.124.128    4.36.124.255    美国 Technical Resource Connections Inc\n" +
            "4.36.125.0      4.36.127.255    美国 坦帕大学\n" +
            "4.37.216.0      4.37.219.255    美国 德克萨斯女子大学\n" +
            "12.2.169.0      12.2.169.255    美国 Leepfrog Technologies\n" +
            "12.3.134.0      12.3.135.255    美国 Lycoming College\n" +
            "12.5.176.240    12.5.176.255    美国 Friends University\n" +
            "193.104.218.0   193.104.218.255 法国 College Des Ingenieurs\n" +
            "193.104.219.0   193.105.42.255  法国  CZ88.NET\n" +
            "193.105.43.0    193.105.52.255  法国 American University of Paris\n" +
            "12.6.230.0      12.6.231.255    美国 Marlboro College\n" +
            "12.11.139.0     12.11.139.255   美国 南佛蒙特学院\n" +
            "12.13.176.128   12.13.176.255   美国 Spelman College\n" +
            "12.16.216.0     12.16.219.255   美国 太平洋联合学院\n" +
            "12.16.220.0     12.19.229.255   美国 ATT用户\n" +
            "12.19.230.0     12.19.230.255   美国 Houghton College";
        String regex = "(?m)^(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(.+)$";
        str = str.replaceAll(regex, "$1,$2,$3,$4");
        System.out.println(str);
    }
}

2008年8月15日 22:09
0 0

贴一个直观的, 有些地方可以简化的, 参考一下:

public void testCn() {
		String input = "3.0.0.0		3.3.0.0		美国		新泽西通用电气公司		";
		input = input.replaceAll("[ \\t]+", " ").trim(); //过滤tab, 将多个空格合成一个空格, 去掉两头的空格
		String regex = "([\\d\\.]+)" + //匹配IP: xxx.xxx.xxx.xxx
				" " + //1个空格, 因为前面的replaceAll中将多个空格合成一个空格
				"([\\d\\.]+)" + //匹配IP: xxx.xxx.xxx.xxx
				" " + //1个空格
				"([\u4e00-\u9fa5]+)" + // 汉字
				" " + //1个空格
				"(.+)"; // 最后的
		Matcher matcher = Pattern.compile(regex).matcher(input.trim());
		matcher.matches();
		assertEquals(input, matcher.group());
		assertEquals("3.0.0.0", matcher.group(1));
		assertEquals("3.3.0.0", matcher.group(2));
		assertEquals("美国", matcher.group(3));
		assertEquals("新泽西通用电气公司", matcher.group(4));
		
		input = "3.0.0.0		3.3.0.0		 美国		I      hate You		";
		input = input.replaceAll("[ \\t]+", " ").trim(); //过滤tab, 去掉两头的空格
		matcher = Pattern.compile(regex).matcher(input.trim());
		matcher.matches();
		assertEquals(input, matcher.group());
		assertEquals("3.0.0.0", matcher.group(1));
		assertEquals("3.3.0.0", matcher.group(2));
		assertEquals("美国", matcher.group(3));
		assertEquals("I hate You", matcher.group(4));

	}

2008年8月15日 13:02
0 0

忘了说,我的办法是先用上面那个正则表达式 split 出来,然后 join 并加逗号分隔,不是直接把空格替换成逗号。

2008年8月15日 11:47
0 0

你这份数据的原始数据应该是 TAB 分隔四列的吧。

^(\S+)\s+(\S+)\s+(\S+)\s+(.*)$


看上去第一第二列都是 IP 地址不会出现空格,并且猜测第三列的数据中没有空格。如果第三列的数据有空格,那就没有办法区分第三列和第四列。

2008年8月15日 11:45

相关推荐

    PB实现的正则表达式

    总的来说,"PB实现的正则表达式"是一个关于在PowerBuilder 11.5中利用自定义或第三方库实现正则表达式功能的话题。虽然存在对中文字符的支持限制,但通过学习和理解提供的代码或库,开发者依然可以提升在Power...

    pb 使用正则表达式源码pbregexp

    标题中的“pb 使用正则表达式源码pbregexp”指的是在PowerBuilder(简称pb)环境中,利用名为“pbregexp”的正则表达式组件来实现源代码级别的正则表达式操作。PowerBuilder是一款流行的可视化的、面向对象的软件...

    正则表达式转换工具

    正则表达式(Regular Expression,简称regex)是一种强大的文本处理工具,它用于匹配、查找、替换等操作,涉及字符串处理的...对于编程人员来说,熟练掌握正则表达式不仅可以提高工作效率,还能解决许多复杂的问题。

    VC、VC++,MFC 正则表达式类库

    正则表达式类库则为VC++和MFC的开发者提供了对正则表达式功能的支持。 "VC、VC++,MFC 正则表达式类库"指的是在MFC中实现或集成的正则表达式处理模块。这个库通常包含一系列的类和函数,允许程序员编写符合特定模式...

    《正则表达式详解》.pdf

    正则表达式是用于匹配和替换文本的一组具有特定含义的字符串,也叫做匹配模式或Pattern。正则表达式的概念起源于对人类神经系统工作原理的研究,后由Warren McCulloch和Walter Pitts两位科学家发展出数学描述神经...

    正则表达式测试工具C#版(src)

    正则表达式是一种强大的文本处理工具,用于在字符串中进行模式匹配和搜索。在C#编程语言中,正则表达式被广泛应用于数据验证、文本提取、格式转换等多个场景。本项目提供了一个C#编写的正则表达式测试工具,包含完整...

    qt使用正则表达式限制lineEdit的输入,对正则表达式进行了封装,可以直接引入,工程编译正常

    在Qt框架中,正则表达式(Regular Expression)是一种强大的文本处理工具,它允许程序员以结构化的方式匹配、查找、替换或验证字符串。本项目针对Qt的lineEdit组件,通过正则表达式实现了输入限制功能,使得lineEdit...

    正则表达式必知必会v_1.0.pdf

    "正则表达式必知必会" 正则表达式是一种强大的文本处理工具,广泛应用于各个领域。下面是对正则表达式的详细解释: 正则表达式的用途 正则表达式主要用于处理文本,提供了两大主要功能:查找和替换。查找功能允许...

    正则式工具(自动生成正则表达式)

    正则式,全称为“正则表达式”,是编程领域中一种强大的文本处理工具,用于匹配、...通过不断实践和学习,你可以更熟练地运用正则表达式解决实际问题,无论是数据提取、文本过滤还是验证用户输入,都将变得轻松自如。

    Java使用正则表达式提取XML节点内容的方法示例

    Java使用正则表达式提取XML节点内容的方法示例 Java使用正则表达式提取XML节点内容的方法示例主要介绍了Java使用正则表达式提取XML节点内容的方法,结合具体实例形式分析了java针对xml格式字符串的正则匹配相关操作...

    正则表达式 必知必会 pdf

    本书基于各种实用场景,从基础的文本匹配开始,逐步深入到回溯引用、条件性求值以及前后查找等高级特性,使得读者能够系统、全面地掌握正则表达式的使用方法,并将其应用于解决实际问题中。 书中介绍的正则表达式...

    易语言正则表达式匹配中文

    在易语言中,正则表达式是进行文本处理、数据提取和搜索的关键工具,尤其在处理中文字符时显得尤为重要。本文将深入探讨易语言中的正则表达式匹配中文的原理、方法以及应用。 正则表达式(Regular Expression)是一...

    正则表达式大全 - 收集的最常用正则表达式

    正则表达式是一种强大的文本处理工具,用于...熟练掌握正则表达式能够提高工作效率,并帮助我们处理各种复杂的文本处理问题。然而,由于正则表达式的复杂性,有时需要根据实际情况进行调整和完善,以确保完全满足需求。

    Delphi2010正则表达式插件

    《Delphi 2010正则表达式插件详解》 在编程世界中,正则表达式(Regular Expression)是一种强大的文本处理工具,能够帮助开发者高效地进行字符串的匹配、查找、替换等操作。在Delphi 2010这个经典的集成开发环境中...

    正则表达式在数据库查询中的应用

    - **兼容性问题**:不同的数据库系统支持的正则表达式语法可能存在差异,需要根据所使用的数据库类型调整正则表达式的写法。 - **安全性问题**:在用户输入的数据中使用正则表达式时,应注意防止SQL注入攻击,确保...

    精通正则表达式(第三版)简体中文版

    ### 正则表达式基础知识与应用 #### 一、正则表达式的定义及用途 正则表达式(Regular Expression)是一种强大的文本处理工具,能够帮助用户查找、替换以及操作特定的字符串或字符组合。它在多种编程语言和操作...

    精通正则表达式(第3版)(含awz3 mobi epub)

    随着互联网的迅速发展,几乎所有工具软件和程序语言都支持的正则表达式也变得越来越强大和易于使用。本书是讲解正则表达式的经典之作。本书主要讲解了正则表达式的特性和流派、匹配原理、优化原则、实用诀窍以及调校...

    正则表达式30分钟入门教程

    正则表达式是一种强大的文本处理工具,它允许用户定义特定的字符串匹配模式,用于在文本中搜索、替换和提取特定模式的数据。在本教程中,作者通过对正则表达式的逐步引导和实例演示,旨在让初学者在30分钟内掌握正则...

    正则表达式验证工具,正则表达式校验工具

    正则表达式验证工具 V1.0 本软件主要用于检测正则表达式是否正确。 运行环境:本软件为绿色软件,无需安装,但需要Microsoft .NET Framework 4 支持,如果没有请前去下载(下载路径:...

    C语言正则表达式库

    C语言正则表达式库是用于在C编程环境中处理和匹配正则表达式的软件库。这个库名为PCRE(Perl Compatible Regular Expressions),正如其名,它与Perl语言中的正则表达式语法高度兼容,提供了丰富的功能和强大的匹配...

Global site tag (gtag.js) - Google Analytics