`

Java正则表达式的一个实例分析

阅读更多

 

 

    很久没用过Java正则表达式了, 今天一个突发任务需要, 磕磕绊绊地用正则表达式完成了。现在趁热打铁地分析下这个正则表达式的写法, 并以此串起正则表达式的一些基本知识点。 

 

    问题是这样的, 需要扫描网站下所有的CSS文件,搜索出类如“url(../img/border.jpg)”这样的图片路径,对其做重命名处理。 

 

    我写的表达式是这样的,"(url\\()(\\S*/)*(\\S*\\.(gif|png))(\\))"。 

 

    直奔主题地分析下这个表达式中各部分的含义。 

 

        1, 最开头的“(”, 它跟最后的"\\("后的")"是成对的, 这是组的概念的体现。正则表达式用组可以表达更精细地切分, 可以说,整个匹配上的字符串整个是一个大组, 然后,这个大组中用括号括起来的部分是一个小组。 用这个机制,我们可以方便地直接拿出小组里的内容,而不用再把匹配到的整个字符串拿到手后,再做正则地切分。  这个思想往大的说, 跟设计模式中的Composite有些相似。 

        2, “url”,要匹配内容的开头, 用字母写出要匹配的内容是最直接的方式。 

        3, "\\("跟上面的"url"类似,不过,更进了一步, 它本它是想表达")"的,但是, 由于"()"在正则表达式里有其它的含义, 这里为了表达想匹配括号本身,就得用到转义了, Java里正则表达式的转义是用“\\”来表示的。

        4, "\\S", 感觉跟"\\("相反,“\\(”是为了表达出左括号的原意,而"\\S"是用字母S定义了一个新语意, 它表示匹配任何非空白字符。 

        5, "\\S"后面的"*", 表示匹配前面的子表达式零次或多次, 即任何非空字符可以出现多次, 这样对应着img文件的众多个父文件夹。 

        6, "/",这个没什么可说的, 跟“url”一样是本意, 在这里对应着img文件路径分隔符。

        7, “(\\S*/)”后的"*",表示“(\\S*/)”可以有多次,这样, 表达出img文件的整个父路径,如“img/a/b.gif”中的,前面部分“img/a/”。 

        8, (\\S*\\.(gif|png))整体上表示img文件的文件名, "\\."跟"\\("类似,也是表达”.“本来的意思, 重点是(gif|png), 从字面上大概能猜出来,这是表达img文件的后缀名,这里的"|"表达"或"的关系,即,可以是gif格式的图片,也可以是png格式的图片。

        9, 最后的”(\\))“不再说。 

 

 

 

  分析到这里, 又想起了, 初次接触正则表达式时的感觉, 正则表达式就像孙猴子的如意金箍棒,可以随心所欲地表达, 灵活,强大!

0
0
分享到:
评论

相关推荐

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

    为了帮助开发者更好地掌握Java正则表达式技术,我们提供了一系列的Java正则表达式技巧大全,包括《Java正则表达式技巧大全》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧...

    java正则表达式匹配工具

    Java正则表达式匹配工具是IT领域中一种强大的文本处理工具,它利用正则表达式(Regular Expression)的规则来查找、替换或者提取文本中的特定模式。正则表达式是一种特殊的字符序列,能够帮助程序员或者用户高效地...

    java正则表达式实例教程

    Java正则表达式是Java编程语言中用于处理字符串的强大工具,它允许程序员通过模式匹配来查找、替换或分割文本。...阅读《JAVA正则表达式实例教程.pdf》将帮助你更全面地理解和掌握Java正则表达式。

    Java正则表达式应用总结

    Java正则表达式是编程语言Java中用于处理字符串和文本的强大工具。它允许开发者通过模式匹配来执行复杂的文本分析和操作。在Java中,正则表达式的操作主要涉及两个核心类:`java.util.regex.Matcher`和`java.util....

    Java正则表达式详细讲解

    Java正则表达式是Java编程语言中用于处理字符串的强大工具,它允许程序员通过模式匹配来查找、替换或分割文本。在Java中,正则表达式是通过`java.util.regex`包提供的API来实现的。本讲解将深入探讨Java正则表达式的...

    Java正则表达式的使用实例

    Java正则表达式是Java编程语言中用于处理字符串的强大工具,它允许程序员通过模式匹配来查找、替换或分割文本。在Java中,正则表达式是通过`java.util.regex`包中的类和接口实现的。本实例将深入探讨如何在Java中...

    JAVA正则表达式实例教程.pdf

    ### JAVA正则表达式实例教程知识点详述 #### 一、正则表达式的定义与特点 **1.1 正则表达式是什么?** - 正则表达式(Regular Expression)是一种模式匹配语言,用于文本搜索和替换。它提供了一种简洁而灵活的方式...

    JAVA正则表达式实例教程.txt

    根据给定文件的信息,我们可以深入探讨Java中的正则...通过以上内容,我们对Java中的正则表达式有了较为全面的理解,从理论到实践,从基本语法到高级用法,正则表达式在数据处理、文本分析等方面扮演着不可或缺的角色。

    java正则表达式资料下载

    Java正则表达式是Java编程语言中用于处理字符串的强大工具,它允许程序员通过模式匹配来查找、替换或分割文本。正则表达式在各种场景下都有广泛应用,如数据验证、文本提取、日志分析等。Java中的正则表达式功能主要...

    java正则表达式讲义.ppt

    Java正则表达式是编程语言Java中用于处理文本的强大工具,其起源可追溯到神经网络研究,后来由数学家Stephen Kleene发展成一种描述特定文本模式的表达式。正则表达式在各种语言中得到广泛应用,例如Perl、PHP、...

    JAVA正则表达式实例教程.rar

    通过学习这个Java正则表达式实例教程,你将掌握如何高效地使用正则表达式进行字符串处理,提升你的Java编程能力。结合提供的PDF文档和下载说明,你可以逐步学习并实践每一个示例,巩固理论知识。同时,访问提供的...

    Java正则表达式的总结和一些小例子

    Java 正则表达式是 Java 编程语言中一个非常重要的组件,它可以用于文本显示、数据表示、查找键和许多其他目的。从 Java 1.4 开始,Java 核心 API 就引入了 java.util.regex 程序包,这是一个非常有价值的基础工具,...

    java正则表达式,十分有用的正则表达式

    #### 四、Java正则表达式实例分析 - **实例1:验证邮箱格式** - 正则表达式:`^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$` - 分析:该正则表达式包含了两个部分,`^[a-zA-Z0-9._%+-]+`用于匹配用户名部分...

    正则表达式经典实例

    1. **基本原理和技巧**:本书首先通过一个精炼的教程帮助读者掌握正则表达式的基础知识,如元字符、量词、分组、断言等,使读者能够迅速上手并熟练运用这些技巧。 2. **多语言支持**:书中详细阐述了如何在不同的...

    java正则表达式实例(邮箱,车牌,密码,url,IP,身份证,车牌等等)

    ### Java正则表达式实例详解 #### 一、概述 正则表达式是一种强大的文本处理工具,能够帮助我们在字符串中查找、替换或提取特定模式的数据。在Java编程中,正则表达式的应用非常广泛,例如在表单验证、数据清洗等...

    精通正则表达式&正则表达式经典实例

    9. **实例应用**:正则表达式广泛应用于文本编辑器(如vim、emacs)、编程语言(如JavaScript、Python、Java)和搜索引擎(如grep、findstr)。例如,用于验证邮箱格式、手机号码、提取URL等。 通过《精通正则...

    JAVA正则表达式

    Java正则表达式是Java编程语言中的一个强大工具,用于处理字符串模式匹配和搜索替换操作。在Java中,正则表达式通常与`java.util.regex`包中的类一起使用,如`Pattern`、`Matcher`和`PatternSyntaxException`。本...

Global site tag (gtag.js) - Google Analytics