很久没用过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, 最后的”(\\))“不再说。
分析到这里, 又想起了, 初次接触正则表达式时的感觉, 正则表达式就像孙猴子的如意金箍棒,可以随心所欲地表达, 灵活,强大!
分享到:
相关推荐
为了帮助开发者更好地掌握Java正则表达式技术,我们提供了一系列的Java正则表达式技巧大全,包括《Java正则表达式技巧大全》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧...
Java正则表达式匹配工具是IT领域中一种强大的文本处理工具,它利用正则表达式(Regular Expression)的规则来查找、替换或者提取文本中的特定模式。正则表达式是一种特殊的字符序列,能够帮助程序员或者用户高效地...
Java正则表达式是Java编程语言中用于处理字符串的强大工具,它允许程序员通过模式匹配来查找、替换或分割文本。...阅读《JAVA正则表达式实例教程.pdf》将帮助你更全面地理解和掌握Java正则表达式。
Java正则表达式是编程语言Java中用于处理字符串和文本的强大工具。它允许开发者通过模式匹配来执行复杂的文本分析和操作。在Java中,正则表达式的操作主要涉及两个核心类:`java.util.regex.Matcher`和`java.util....
Java正则表达式是Java编程语言中用于处理字符串的强大工具,它允许程序员通过模式匹配来查找、替换或分割文本。在Java中,正则表达式是通过`java.util.regex`包提供的API来实现的。本讲解将深入探讨Java正则表达式的...
Java正则表达式是Java编程语言中用于处理字符串的强大工具,它允许程序员通过模式匹配来查找、替换或分割文本。在Java中,正则表达式是通过`java.util.regex`包中的类和接口实现的。本实例将深入探讨如何在Java中...
### JAVA正则表达式实例教程知识点详述 #### 一、正则表达式的定义与特点 **1.1 正则表达式是什么?** - 正则表达式(Regular Expression)是一种模式匹配语言,用于文本搜索和替换。它提供了一种简洁而灵活的方式...
根据给定文件的信息,我们可以深入探讨Java中的正则...通过以上内容,我们对Java中的正则表达式有了较为全面的理解,从理论到实践,从基本语法到高级用法,正则表达式在数据处理、文本分析等方面扮演着不可或缺的角色。
Java正则表达式是Java编程语言中用于处理字符串的强大工具,它允许程序员通过模式匹配来查找、替换或分割文本。正则表达式在各种场景下都有广泛应用,如数据验证、文本提取、日志分析等。Java中的正则表达式功能主要...
Java正则表达式是编程语言Java中用于处理文本的强大工具,其起源可追溯到神经网络研究,后来由数学家Stephen Kleene发展成一种描述特定文本模式的表达式。正则表达式在各种语言中得到广泛应用,例如Perl、PHP、...
通过学习这个Java正则表达式实例教程,你将掌握如何高效地使用正则表达式进行字符串处理,提升你的Java编程能力。结合提供的PDF文档和下载说明,你可以逐步学习并实践每一个示例,巩固理论知识。同时,访问提供的...
Java 正则表达式是 Java 编程语言中一个非常重要的组件,它可以用于文本显示、数据表示、查找键和许多其他目的。从 Java 1.4 开始,Java 核心 API 就引入了 java.util.regex 程序包,这是一个非常有价值的基础工具,...
#### 四、Java正则表达式实例分析 - **实例1:验证邮箱格式** - 正则表达式:`^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$` - 分析:该正则表达式包含了两个部分,`^[a-zA-Z0-9._%+-]+`用于匹配用户名部分...
1. **基本原理和技巧**:本书首先通过一个精炼的教程帮助读者掌握正则表达式的基础知识,如元字符、量词、分组、断言等,使读者能够迅速上手并熟练运用这些技巧。 2. **多语言支持**:书中详细阐述了如何在不同的...
### Java正则表达式实例详解 #### 一、概述 正则表达式是一种强大的文本处理工具,能够帮助我们在字符串中查找、替换或提取特定模式的数据。在Java编程中,正则表达式的应用非常广泛,例如在表单验证、数据清洗等...
9. **实例应用**:正则表达式广泛应用于文本编辑器(如vim、emacs)、编程语言(如JavaScript、Python、Java)和搜索引擎(如grep、findstr)。例如,用于验证邮箱格式、手机号码、提取URL等。 通过《精通正则...
Java正则表达式是Java编程语言中的一个强大工具,用于处理字符串模式匹配和搜索替换操作。在Java中,正则表达式通常与`java.util.regex`包中的类一起使用,如`Pattern`、`Matcher`和`PatternSyntaxException`。本...