`
huiqinbo
  • 浏览: 347655 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

今天闲谈下最近写的正则表达式方法,对初学者来说绝对实用【回钦波】

 
阅读更多

////////////////// test1    ADD_START-2012年02月03日  HUIQINBO/////////////////////////

 

public static void main(String args[]){

    String  line =  "     St Sc                  :huiqinbo"
                      +"    St Dt IP               :111.222.111.222"
                      +"    St IP TS               :0x32"
                      +"    St L4 Src Pt/IP te:80(0x50)"
                      +"    St L4 Dst Pt/IP ce:12";

 

    String  line =  "St L4 Src Pt/IP te:80(0x50)"; 

     .........

     String setL4SrcPortICMPtype = getValue(line, "St L4 Src Pt/IP te");

 

     调用getValue后的结果为80(0x50)

     ........
}

 

 

public static String getValue(String line, String attrName) {
        WALog.traceIn();

        if (line == null || attrName == null) {
            throw new IllegalArgumentException();
        }

        String quotedAttrName = Pattern.quote(attrName);

        try {
            Matcher matcher =
Pattern.compile(
                    quotedAttrName + "
\\s*:\\s*(\\S+)\\b").matcher(line);

            if (!matcher.find()) {
                WALog.traceOut();

                return "";
            }

            String value = matcher.group();
            WALog.traceOut();

            return value.substring(value.indexOf(':') + 1).trim();

        } catch (PatternSyntaxException e) {
            WALog.traceOut();

            return "";

        }

    }

 

////////////////// test1    ADD_END-2012年02月03日  HUIQINBO/////////////////////////

 

 

 

///////////////////////test2   ADD_START-2012年02月29日  HUIQINBO//////////////////////////////////

 

今天正好有点时间我来补充一下上面我没有写完的方法:

其实上面的  getValue(String line, String attrName) 方法有不完美之处,为什么呢,因为如果你把我上面写好的程序copy到你的代码中去,会发现我上面写到的 调用getValue后的结果为80(0x50)】 会少一个右括号,正确结果是 80(0x50

 

那为什么会少一个右括号呢,你自己考虑下,因为我写的正则表达式是\\s*:\\s*(\\S+)\\b  它,最后是以 \\b 结尾的,\\b 是指已单词末尾结尾,所以自然右括号就被过虑掉了,那我们该如何来把正确的结果80(0x50)   显示出来呢,下面我再写一个方法来满足需求,真不想写,写完会大家写不给个好评呵:

 

public static String getValue1(String line, String attrName) {
        WALog.traceIn();

        if (line == null || attrName == null) {
            throw new IllegalArgumentException();
        }

        String quotedAttrName = Pattern.quote(attrName);

        try {
         // find key:xx(xx)
            Matcher matcher = Pattern.compile(
                    quotedAttrName + "\\s*:\\s*\\S*\\s*\\(\\s*(\\S+)\\s*\\)").matcher(line);

            if (!matcher.find()) {
             // find key:(xx)
                matcher = Pattern.compile(
                  quotedAttrName + "\\s*:\\s*\\(\\s*(\\S+)\\s*\\)").matcher(line);
               
                if (!matcher.find()) {
                 // find key:xx
                 matcher = Pattern.compile(
                         quotedAttrName + "\\s*:\\s*(\\S+)\\b").matcher(line);
                 if (!matcher.find()) {
                     WALog.traceOut();
 
                     return "";
                 }
                }
            }

            String value = matcher.group();
            WALog.traceOut();

            return value.substring(value.indexOf(':') + 1).trim();

        } catch (PatternSyntaxException e) {
            WALog.traceOut();

            return "";

        }

    }

 

上面的粉色部分就是来处理我们的需求的, 解释下吧,若不又有网友提出各种的问题

\\s*     是指0个或多个空格

\\S*     是指0个或多个字符

\\(       是指小括号的左部分

(\\S+)   一个或多个字符,当然可以把\\S+两边的括号去掉,我这里写是为了便于观客们易看

\\)       是指小括号的右部分

 

这回大家清楚了吧,这次的结果一写是  80(0x50)  

 

好了,更多交流、更多了解,请联系我

QQ:444084929 【回钦波】

个人主面 :http://www.huiqinbo.com

 

 

///////////////////////test2   ADD_START-2012年02月29日  HUIQINBO//////////////////////////////////

0
1
分享到:
评论

相关推荐

    关于程序设计方法学的一些闲谈

    总结来说,程序设计方法学是不断演进的,从最初的技巧至上到结构化、面向对象,再到分布式和敏捷开发,它反映了计算机科学和技术的进步,以及对软件质量、可维护性和开发效率的追求。在实践中,选择合适的设计方法和...

    闲谈工厂模式

    在软件设计模式中,工厂模式是一种非常基础且实用的设计模式,它主要解决的是对象创建的问题。工厂模式的主要目的是封装对象的创建过程,使得代码在不指定具体类的情况下,能够创建对象,增强了代码的可扩展性和可...

    Java设计模式入门闲谈

    ### Java设计模式入门详解 #### 一、设计模式概述 设计模式是软件工程领域中一种通用的解决方案,它描述了...希望本文对初学者有所启发,也期待大家在实际开发中能够灵活运用这些模式,创作出更加优雅和高效的代码。

    SEM优化:品牌词管理闲谈(下).doc

    SEM优化:品牌词管理闲谈(下).doc

    面试中的闲谈技巧,好的闲谈是敲门砖

    面试中的闲谈技巧,好的闲谈是敲门砖

    专题资料(2021-2022年)SEM优化:品牌词管理闲谈下.doc

    因此,对于SEM管理员或SEO专家来说,确保品牌词的高排名是至关重要的,这可以有效地引导这些高度转化的流量直接到达目标网站。 品牌词管理的一些常见策略包括将品牌词推至搜索结果的首位,以及利用品牌变体词来扩大...

    Java基于Swing实现的简单聊天室,支持多人在线闲谈.zip

    Java Swing 是Java提供的一种用于构建桌面应用程序用户界面的图形用户界面工具包,它属于Java ...这个项目对于初学者来说是一个很好的起点,同时也对有经验的开发者有参考价值,帮助他们快速搭建自己的聊天应用框架。

    JS调用XML的结合的闲谈

    例如,通过`document.implementation.createDocument()`创建一个新的XML文档对象,然后使用`getElementsByTagName()`, `getElementById()`, 或 `querySelectorAll()`等方法来选取特定的XML元素。 2. XMLHttpRequest...

    闲谈嵌入式编程的复杂性

    ### 闲谈嵌入式编程的复杂性 #### 嵌入式编程的入门与挑战 嵌入式编程是一项技术密集型的工作,它涉及到软件与硬件的紧密结合。文章提到,很多从事嵌入式编程的工程师往往是从自动化或电子等相关专业转型而来,这...

    开发经验,PCB布板闲谈

    设计者需要综合考虑这些因素来完成一个高质量的PCB布局。 #### 三、信号完整性设计 信号完整性问题主要出现在高速数字电路中,尤其是在使用DDR内存等高速组件时尤为突出。为了减少信号反射、串扰等问题,需要注意...

    河北省青龙满族自治县逸夫中学高中语文 第6专题 第16课 春末闲谈学练案 苏教版选修《现代散文选读》.doc

    6. **创作背景**:《春末闲谈》写于1925年,当时中国正处于北洋军阀统治时期,思想文化领域受到压制,鲁迅借此篇散文对封建统治者的麻痹术进行了批判。 7. **文章主旨**:文章通过细腰蜂与青虫的比喻,揭示了统治者...

    新视野英语读写第二册第一后练习课文翻译PPT课件.pptx

    在当今世界,学习英语已经成为了大多数国家的必修课程,而美国作为一个拥有强大文化影响力的国家,其国民的时间观念和价值观对学习者来说尤为重要。本篇内容将围绕《新视野英语读写第二册第一单元练习课件》进行展开...

    高手讲解系列!闲谈嵌入式编程的复杂性

    闲谈嵌入式编程的复杂性 嵌入式编程是一种复杂的编程技术,需要开发人员具备深入的编程知识和实践经验。文章通过两个实践例子,说明了嵌入式编程中的多个问题,并分析了解决这些问题的方法。 嵌入式编程的复杂性...

    Photoshop调色教程:闲谈LAB模式计算调色详解.docx

    Photoshop调色教程中提到的“LAB模式”是一种与设备无关的颜色模型,它模拟了人眼对颜色的感知,包含了所有人类能看见的颜色。在LAB模式下,图像由一个明度通道和两个颜色通道(a通道和b通道)组成。明度通道负责...

    逐星游戏网

    这个项目对于初学者来说具有一定的学习价值,因为它运用了多种常见的Web开发技术,如伪静态页面和ASHX(HTTP自定义处理程序)来实现动态数据的处理。 首先,我们来看看“伪静态页面”。在Web开发中,伪静态是一种将...

    51种用户研究方法卡片

    移情工具方法要求设计师使用辅助工具如雾气眼镜或过重的手套来模拟不同身体状态下的用户感受,这有助于设计师体验特殊用户群体的困境,从而评估产品的可用性。 等比模型方法利用与实际物体等比例缩小的模型来展示...

    Python闲谈(二)聊聊最小二乘法以及leastsq函数.docx

    Python闲谈(二)聊聊最小二乘法以及leastsq函数.docx

    Python闲谈(二)聊聊最小二乘法以及leastsq函数.pdf

    Python闲谈(二)聊聊最小二乘法以及leastsq函数.pdf

    Photoshop调色教程:闲谈LAB模式计算调色详解.pdf

    Photoshop调色教程:闲谈LAB模式计算调色详解 Photoshop调色教程:闲谈LAB模式计算调色详解是一篇详细的Photoshop调色教程,旨在帮助读者深入了解LAB模式计算调色的原理和应用。 LAB 模式的概念 LAB 模式是一种...

    Python1闲谈(二)聊聊最小二乘法以及leastsq函数.pdf

    。。Python1闲谈(二)聊聊最小二乘法以及leastsq函数.pdf

Global site tag (gtag.js) - Google Analytics