`
yysct2005
  • 浏览: 90714 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java 正则表达式全攻略(一)

    博客分类:
  • java
阅读更多

Java 正则表达式全攻略(一)

[ 2010-04-23 12:42:10.0 | 作者: 随想  类别: 基础强化   ] 来源:网络收集       浏览 1954 
labels:Java 正则表达式全攻略(一) 文字字符 java正则表达式 特殊字符 不可显示字符

特此声明

本文并非全部原创,我只是在前人的基础上进行针对Java的补充和完成。特此向各位前辈致敬。本文来源于以下内容:

什么是正则表达式

正则表达式(英文:Regular Expression)在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索或替换那些符合某个模式的文本内容。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。“正则表达式”通常缩写成“regex”。

在现实工作场景中,正则表达式常被用于进行输入验证、内容检索、字符串替换等工作。个人认为正则表达式应该算程序员的必修课之一,由于它应用的非常之广泛,而且在各种语言基本上都可以使用,更重要的是在 Linux 或 Unix 系统下能灵活使用正则表达式也可大大提高工作效率,所以学习它是非常保值的。

正则表达式与正则表达式引擎

直观而言正则表达式是一段负责正则表达式语法的字符串,而负责处理这段表达式的程序,就是正则表达式引擎。表达式引擎由语言或环境提供,作为开发者并不直接面对它。我们只需要编写表达式,然后交给表达式引擎进行处理就可以了。不同语言或环境会以不同方式为我们使用正则表达式提供支持,就拿Java语言来说,我们可以在 String.replaceAll() / String.split() / String.matches() 上直接使用正则表达式,又或者通过 java.util.regex 包中提供的类来使用正则表达式。

不同环境的正则表达式写法与支持或多或少会有一些差别,不过这你可以完全不需要当心,因为这并不影响你使用正则表达式,近代的表达式引擎都非常类似。Perl 5 类型的引擎应该算应用最为广泛的引擎。如果你想了解各种风格的引擎的语法支持,可以参考《Regexp Syntax Summary 》。

表达式与符号

让我们从一个最简单的程序(Java)开始说起:

   1:
 String string = "gooooooogle"
;
   2:
 String regex = "go*gle"
;
   3:
 System.out.println(string.matches(regex));

这个段代码运行的话,将会在控制台输出“true”。它是说字符串 string 与正则表达式 regex 匹配,换句话说,就是字符串 string 符合正则表达式 regex 所描述的模式。在该例子中,最起码我们可以知道正则表达式的操作对象是字符串,而正则表达式也是一个字符串。字符串又是由字符所构成的,在表达式  go*gle   中 g,o,l,e 是文字字符而 * 是数量限定字符,它代表前面的字符可以不出现,也可以出现一次或者多次。

文字字符

最基本的正则表达式由单个文字符号组成。如  a   ,它将匹配字符串中第一次出现的字符“a”。如对字符串“Jack is a boy”。“J”后的“a”将被匹配。而第二个“a”将不会被匹配。正则表达式也可以匹配第二个“a”,这必须是你告诉正则表达式引擎从第一次匹配的地方开始搜索。在文本编辑器中,你可以使用“查找下一个”。如果变成 Java 代码的话就是这样:

   1:
 String string = "Jack is a boy"
;
   2:
 // 将字符串编译为正则表达式的对象表示形式
   3:
 Pattern pattern = Pattern.compile("a"
);
   4:
 // 创建对字符串 string 根据正则表达式 pattern 进行匹配操作的匹配器对象
   5:
 Matcher matcher = pattern.matcher(string);
   6:
 // 查找下一个匹配的字符串内容,如果找到返回 true,找不到返回 false
   7:
 while
(matcher.find()) {
   8:
     // 输出捕获到的匹配内容
   9:
     System.out.print(matcher.group() + "\t"
);
  10:
 }

类似的,cat   会匹配“About cats and dogs”中的“cat”。这等于是告诉正则表达式引擎,找到一个c ,紧跟一个a ,再跟一个t 。要注意,正则表达式引擎缺省是大小写敏感的。除非你告诉引擎忽略大小写,否则  cat   不会匹配“Cat”,就像下面这样。(除了这种方法,还可以在表达式内声明什么内容需要区分大小写什么不需要,这在后面会有介绍)

   1:
 String string = "About Cats and dogs"
;
   2:
 // 在编译表达式时使用标记 CASE_INSENSITIVE,使表达式忽略大小写
   3:
 Pattern pattern = Pattern.compile("cat"
, Pattern.CASE_INSENSITIVE);
   4:
 Matcher matcher = pattern.matcher(string);
   5:
 while
(matcher.find()) {
   6:
     System.out.print(matcher.group() + "\t"
);
   7:
 }

特殊字符

对于文字字符,有11个字符被保留作特殊用途。他们是:[ ] \ ^ $ . | ? * + ( )  这些特殊字符也被称作元字符。 如果你想在正则表达式中将这些字符用作文本字符,你需要用反斜杠“\”对其进行换码 (escape)。例如你想匹配“1+1=2”,正确的表达式为  1\+1=2   。需要注意的是,1+1=2   也是有效的正则表达式。但它不会匹配“1+1=2”,而会匹配“123+111=234”中的“111=2”。因为“+”在这里表示特殊含义(重复1次到多次)。

不可显示字符

可以使用特殊字符序列来代表某些不可显示字符:
\t   代表Tab(0x09)
\r   代表回车符(0x0D)
\n   代表换行符(0x0A)
要注意的是Windows中文本文件使用“\r\n”来结束一行而Unix使用“\n”。

分享到:
评论

相关推荐

    java正则表达式.zip

    Pattern类是Java正则表达式的起点,它将一个正则表达式编译成一个模式对象。这个编译过程可以优化后续的匹配操作。例如,创建Pattern对象的代码如下: ```java Pattern pattern = Pattern.compile("正则表达式"); `...

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

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

    使用Java正则表达式分析处理日志

    本篇将围绕“使用Java正则表达式分析处理日志”这一主题,探讨如何利用Java的正则表达式功能来提取、过滤和操作日志数据。 首先,我们需要理解正则表达式的基本概念。正则表达式(Regular Expression)是一种模式...

    Java正则表达式 Java 正则表达式

    Java正则表达式是Java语言中用于处理字符串的强大工具,它允许程序员进行复杂的字符串匹配、查找和替换操作。正则表达式(Regular Expression)是一种模式匹配语言,通过特定的语法来描述字符串的模式,用于在文本中...

    JAVA正则表达式大全

    在IT领域,正则表达式(Regular Expression,简称regex)是一种强大的文本处理工具,它用于匹配、查找、替换和分析字符串。在Java编程语言中,正则表达式被广泛应用于数据验证、文本提取和字符串操作。以下是对这些...

    java正则表达式匹配工具

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

    Java正则表达式.ppt

    Java正则表达式是一种强大的文本处理工具,广泛用于验证字符串、查找特定模式和替换文本。在Java中,正则表达式提供了简洁而灵活的方式来处理字符串,使得编程人员能够以更高效的方式实现各种文本操作。 正则表达式...

    java正则表达式验证IP地址

    Java正则表达式验证IP地址 Java正则表达式验证IP地址是指使用Java语言中的正则表达式来验证IP地址是否符合标准。IP地址是指在网络通信中用来标识设备的地址,它是一种逻辑地址,通过它可以找到网络中的设备。在...

    java 正则表达式应用jar包 regex-smart.jar

    Java正则表达式是编程语言Java中的一个强大工具,它用于模式匹配、数据验证和文本检索替换。在Java中,正则表达式是通过java.util.regex包提供的接口和类来实现的。`regex-smart.jar`这个库显然是为了简化开发者在...

    java正则表达式验证

    java使用正则表达式进行校验验证,主要使用了Pattern和Matcher类,直接main方法运行就可以,亲测有效

    使用Java正则表达式实现一个简单的身份证号码验证

    ### 使用Java正则表达式实现一个简单的身份证号码验证 #### 一、背景介绍 身份证号码是中国公民的身份标识,由15位或18位数字组成(早期为15位,后改为18位)。其中,第18位是校验码,可能是数字0~9或者大写字母X。...

    Java 正则表达式 图片版

    Java正则表达式 Java 正则表达式 图片版 携带方便,查阅方便!~

    Java正则表达式应用总结

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

    Java正则表达式_动力节点Java学院整理

    Java正则表达式是Java语言中的一种模式匹配技术,用于匹配、查找、替换和判断字符串。它是一种强大的工具,能够帮助开发者快速处理字符串相关的任务。 什么是正则表达式? 正则表达式是一种特殊的字符串,用于描述...

    java正则表达式使用例子

    总结来说,Java正则表达式在Android开发中扮演着不可或缺的角色,它提供了一种灵活的方式来处理和验证字符串数据。通过熟练掌握正则表达式,开发者能够提高应用程序的质量,确保用户输入的有效性,并优化文本处理...

    常用正则表达式HTML,JAVA合集

    正则表达式(Regular Expression,简称regex)是用于匹配字符串的一种模式,广泛应用于文本处理、数据验证、数据提取等IT领域。在这个“常用正则表达式HTML,JAVA合集”中,我们主要关注的是HTML和Java环境下的正则...

    Java正则表达式介绍和练习

    Java正则表达式介绍和练习Java正则表达式介绍和练习Java正则表达式介绍和练习

    Java正则表达式详细讲解

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

    Java 正则表达式库

    Java正则表达式库是Java开发中不可或缺的一部分,它为开发者提供了一种强大的文本匹配工具。在Java中,正则表达式(Regular Expression)是一种模式匹配语言,用于处理字符串操作,如查找、替换或提取特定模式的数据...

Global site tag (gtag.js) - Google Analytics