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

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

    博客分类:
  • java
阅读更多

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

[ 2010-04-23 12:45:27.0 | 作者: 随想 类别: 基础强化 ] 来源:网络收集     浏览 2637
labels:Java 正则表达式全攻略(四) java正则表达式 边界匹配器 分支

边界匹配器

^ 行的开头
$ 行的结尾
\b 单词边界
\B 非单词边界
\A 输入的开头
\G 上一个匹配的结尾
\Z 输入的结尾,仅用于最后的结束符(如果有的话)
\z 输入的结尾

边界匹配和一般的正则表达式符号不同,它不匹配任何字符。相反,他们匹配的是字符之前或之后的位置;因此,你不可使用边界匹配器来捕获内容。 ^a 将会匹配字符串“abc”中的a。 ^b 将不会匹配“abc”中的任何字符。类似的,$匹配字符串中最后一个字符的后面的位置。所以 c$ 匹配“abc”中的c。

在日常工作中边界匹配是十分有用的。例如用户输入中,常常会有多余的前导空格或结束空格。你可以用 ^\s* \s*$ 来匹配前导空格或结束空格。还有,如果你想检查一段对话内 Frank 这个名字出现了多少次,你可以使用 \bFrank\b 进行匹配,他不会把 Frank 和 Frankie 当成同一个人。

基本上边界匹配都比较容易理解,不过还有有些地方稍微注意一下的。

注意行结束符

行结束符是一个或两个字符的序列,标记输入字符序列的行结尾。以下代码被识别为行结束符:

  • 新行(换行)符 ('\n' )、
  • 后面紧跟新行符的回车符 ("\r\n" )、
  • 单独的回车符 ('\r' )、
  • 下一行字符 ('\u0085' )、
  • 行分隔符 ('\u2028' ) 或
  • 段落分隔符 ('\u2029 )。

如果你所要匹配的内容有多行,需要使用行边界配置,请不要忘记打开多行模式。因为默认情况下,正则表达式 ^$ 仅分别与整个输入序列的开头和结尾匹配。就拿下面一段代码来说,

   1:


 String string = "This is\r\na test\r\nString."
;

   2:


 Pattern p = Pattern.compile("^.+$"
, Pattern.MULTILINE); // 打开多行匹配模式


   3:


 Matcher m = p.matcher(string);

   4:


 while
 (m.find()) {

   5:


     System.out.println("["
 + m.group() + "]"
);

   6:


 }

如果你没有打开多行配置模式,你将无法匹配任何内容。

此外,还需要注意的是 . 和行结束符的关系,如果未指定 DOTALL 标志的情况下,则正则表达式 . 可以与任何字符(行结束符除外)匹配。

分支的实现

正则表达式中“|”表示选择。你可以用选择符匹配多个可能的正则表达式中的一个。如果你想搜索文字“cat”或“dog”,你可以用 cat|dog 。选择符在正则表达式中具有最低的优先级,也就是说,它告诉引擎要么匹配选择符左边的所有表达式,要么匹配右边的所有表达式。你也可以用圆括号来限制选择符的作用范围。如 \b(cat|dog)\b ,这样告诉正则引擎把(cat|dog)当成一个正则表达式单位来处理。

注意个选择的顺序

\d{5}-\d{4}|\d{5} 这个表达式用于匹配美国的邮政编码。美国邮编的规则是5位数字,或者用连字号间隔的9位数字。如果你把它改成 \d{5}|\d{5}-\d{4} 的话,那么就只会匹配5位的邮编(以及9位邮编的前5位)。原因是匹配分枝条件时,将会从左到右地测试每个条件,如果满足了某个分枝的话,就不会去再管其它的条件了。

分享到:
评论

相关推荐

    java正则表达式.zip

    Java正则表达式是Java编程语言中用于处理字符串的强大工具,它基于模式匹配的概念,能够高效地进行文本搜索、替换和解析。在Java中,正则表达式主要通过`java.util.regex`包来实现,提供了Pattern和Matcher两个核心...

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

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

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

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

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

    四、Java正则表达式技巧大全 在Java中,正则表达式是一种非常有用的技术,它可以帮助开发者快速匹配和提取字符串中的内容。但是,正则表达式也是一种非常复杂的技术,需要开发者具备一定的基础知识和经验。 为了...

    JAVA正则表达式大全

    在Java编程语言中,正则表达式被广泛应用于数据验证、文本提取和字符串操作。以下是对这些文档标题所涉及的Java正则表达式知识点的详细解释: 1. **正则表达式之道** 这个主题可能涵盖了正则表达式的基础概念,...

    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正则表达式 Java 正则表达式 图片版 携带方便,查阅方便!~

    Java正则表达式应用总结

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

    java正则表达式使用例子

    Java正则表达式是Java编程语言中用于处理字符串的强大工具,它允许我们通过模式匹配来查找、替换或分割文本。在Android开发中,正则表达式尤其重要,因为它们可以帮助我们验证用户输入、处理文本数据或者进行复杂的...

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

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

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

    Java提供了`java.util.regex`包,通过`Pattern`和`Matcher`类支持正则表达式。以下是如何在Java中验证电话号码的一个例子: ```java import java.util.regex.Pattern; import java.util.regex.Matcher; String...

    Java正则表达式详细讲解

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

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

    #### 四、正则表达式的构建 根据以上规则,我们可以构建出一个符合中国身份证号码格式的正则表达式: ```java String regex = "^(\\d{15}$|^\\d{18}$|^\\d{17}(\\d|X|x))$"; ``` - `^`:表示字符串的开头。 - `\\d{...

    Java正则表达式介绍和练习

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

    Java正则表达式测试工具

    Java正则表达式测试工具是面向开发者和爱好者的一款实用程序,它可以帮助用户验证和调试他们的正则表达式。在Java编程环境中,正则表达式是一个强大的字符串处理工具,广泛用于数据验证、文本搜索和替换等任务。这款...

Global site tag (gtag.js) - Google Analytics