阅读更多

23顶
2踩

编程语言

原创新闻 Java7: 正则表达式将支持命名捕获组

2009-03-12 08:53 by 见习编辑 Eastsun 评论(9) 有13964人浏览
  目前Java的正则表达式不支持命名捕获组功能,只能通过捕获组的计数来访问捕获组.当正则表达式比较复杂的时候,里面含有大量的捕获组和非捕获组,通过从左至右数括号来得知捕获组的计数也是一件很烦人的事情;而且这样做代码的可读性也不好,当正则表达式需要修改的时候也会改变里面捕获组的计数.
  解决这个问题的方法是通过给捕获组命名来解决,就像Python, PHP, .Net 以及Perl这些语言里的正则表达式一样.这个特性Javaer已经期待了很多年,而现在我们终于在JDK7 b50得到了实现.
  新引入的命名捕获组支持如下:
   (1) (?<NAME>X) to define a named group NAME"                    
   (2) \k<Name> to backref a named group "NAME"                 
   (3) <$<NAME> to reference to captured group in matcher's replacement str
   (4) group(String NAME) to return the captured input subsequence by the given "named group"

  现在你可以像这样使用正则式:
String pStr = "0x(?<bytes>\\p{XDigit}{1,4})\\s++u\\+(?<char>\\p{XDigit}{4})(?:\\s++)?";
    Matcher m = Pattern.compile(pStr).matcher(INPUTTEXT);
    if (m.matches()) {
        int bs = Integer.valueOf(m.group("bytes"), 16);
        int c =  Integer.valueOf(m.group("char"), 16);
        System.out.printf("[%x] -> [%04x]%n", bs, c);
    }

或者
    System.out.println("0x1234 u+5678".replaceFirst(pStr, "u+$<char> 0x$<bytes>"));
23
2
评论 共 9 条 请登录后发表评论
9 楼 lookdd1 2009-03-13 15:43
java7  有传言支持闭包?
8 楼 littlealex 2009-03-13 15:05
7 楼 norety 2009-03-12 18:57
  
6 楼 不吃鱼的猫 2009-03-12 13:16
不是有java版的perl regex包吗?
5 楼 allenny 2009-03-12 12:29
ray_linn 写道

先增加C#里的@吧。。。

正解,先把表达式负责度降下来
4 楼 whaosoft 2009-03-12 11:28
这个功能挺不错的~!!
3 楼 ray_linn 2009-03-12 11:22
先增加C#里的@吧。。。
2 楼 wjsun84 2009-03-12 09:56
有没有 java7 的发布计划时间表
1 楼 tianhaoleng 2009-03-12 09:32
支持一下,期待java7

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • Borland_Kylix_3_Enterprise_keygen

    Borland_Kylix_3_Enterprise_keygen

  • linux可视化编程,Kylix带你走进Linux可视化编程世界

    文/李雷鸣Kylix是Borland于年初推出的Linux版本的Delphi,同样使用Object Pascal语言。它采用以Xwindow Qt开发组件为基础的新的组件架构CLX,与Red Hat 6.2等多数Linux系统兼容,是基于Linux系统的第一套集界面设计、代码编写、调试运行于一体的RAD。快速开发运行Kylix,通过其IDE环境(图1)就可以设计程序了。你可以从控件板上选取控件放到...

  • Kylix安装配置实战 .

    Kylix安装配置实战 分类: Ubuntu 2008-08-19 23:08 94人阅读 评论(0) 收藏 举报 borlandlinux数据库linux内核delphigtk   Kylix(基里克斯陶杯) 原来是希腊神话中的一种器具(如图1),Inprise/Borland 将它命名为Linux平台上的RAD(快速应用程序)开发工具,给网络界很大的冲击。传统的

  • Linux的开发利器,Kylix (我决定用它,因为涉及到复杂数据库操作,并且需要编译后的效率)

    原文出处: http://www.dgdown.com.cn/Programming/Delphi/8705_4.html前言     Linux可以说是IT业的一个奇迹,对于它的存在,任何一个业内人士都不敢等闲视之。目前,Linux面临的最大问题就是应用程序太少,不能满足各个领域使用者的需求,这是Linux很难战胜Windows的主要原因之一。虽然,随着许多公司和编程爱好者的加入,这种局面正

  • 基于Linux的快速开发工具Kylix

    介绍了 基于Linux的快速开发工具kylix的优缺点

  • Kylix3 linux下的delphi

    Kylix3。BLAND早期 linux下的 delphi,现在的linux也不一定支持了,怕误删除找不到了,所以放在这里。怀旧情节的人可下载了解一下。

  • [Borland.Kylix&#8482;.3.企业版含破解].Borland.Kylix.3.Enterprise.Linux.-.crack.zip

    [Borland.Kylix&#8482;.3.企业版含破解].Borland.Kylix.3.Enterprise.Linux.-.crack.zip

  • Kylix安装配置实战

    绍Kylix的安装。

  • Kylix...

    http://www.kylix.com.cn/Kylix介绍在1999年9月28日Inprise/Borland声明要开发一个“支持C、C 和Delphi的高性能Linux应用程序开发环境”时,Kylix正式启动,它是第一个基于Linux的高性能RAD工具。当时的声明里提到:目前Kylix项目计划开发为一个基于Linux的双向可视化组件开发环境,可以开发GUI、Internet、数据库和服务

  • Linux的开发利器,Kylix

    Linux的开发利器,Kylix 2001-08-22 15:00:00· 伊秋水· chinabyte1 2 3 4  下一页前言     Linux可以说是IT业的一个奇迹,对于它的存在,任何一个业内人士都不敢等闲视之。目前,Linux面临的最大问题就是应用程序太少,不能满足各个领域使用者的需求,这是Linux很难战胜Windows的主要原因之一。虽

  • Ubuntu 5.1下安装Kylix3

    首先要安装好Ubuntu——废话。然后,就是装Kylix3。为了保险起见,我是在root用户下安装的,可能用sudo方式也可以。另,据说需要在英文方式下安装,所以我切换到英文状态下装的——即使是装成中文的Ubuntu也可以在登录前选择语言——没试过在中文方式下安装行不行。 据我的经验是,在ubuntu 5.1下直接安装Kylix3会报错:libgtk版本不对。解决办法当然就是装一个对的版本

  • Kylix

     Kylix是Borland公司推出的GNU/Linux版的开发环境,相对于Windows下的Delphi以及C++ Builder。通过Kylix,程序员可以在GNU/Linux下使用Object Pascal、C++或者C语言,进行软件开发。目前这个工具的前景不明朗,没有推出新版(Kylix 4)的迹象。对于Delphi 2005,也没有升级的途径,Delphi 2005可能不包含CL

  • Kylix 3 企业版安装手记

    Kylix 3企业版安装手记******************************************************************************                                                                           **    知识产权声明                   

Global site tag (gtag.js) - Google Analytics