正则表达式(Java)[精].doc

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
正则表达式(Java)[精]

正则表达式 正则表达式是JDK 1.4的新功能,但是对sed和awk这样的Unix的标准实用工具,以及Python,Perl之类的语言来讲,它早就已经成为其不可或缺的组成部分了(有人甚至认为,它还是Perl能大获成功的最主要的原因)。单从技术角度来讲,正则表达式只是一种处理字符串的工具(过去Java这个任务是交由String,StringBuffer以及StringTokenizer处理的),但是它常常和I/O一起使用,所以放到这里来讲也不算太离题吧。 正则表达式是一种功能强大但又非常灵活的文本处理工具。它能让你用编程的方式来描述复杂的文本模式,然后在字符串里把它找出来。一旦你找到了这种模式,你就能随心所欲地处理这些文本了。虽然初看起来正则表达式的语法有点让人望而生畏,但它提供了一种精练的动态语言,使我们能用一种通用的方式来解决各种字符串的问题,包括匹配,选择,编辑以及校验。 创建正则表达式 你可以从比较简单的东西入手学习正则表达式。要想全面地掌握怎样构建正则表达式,可以去看JDK文档的java.util.regex的Pattern类的文档。 字符 B 字符B \xhh 16进制值0xhh所表示的字符 \uhhhh 16进制值0xhhhh所表示的Unicode字符 \t Tab \n 换行符 \r 回车符 \f 换页符 \e Escape 正则表达式的强大体现在它能定义字符集(character class)。下面是一些最常见的字符集及其定义的方式,此外还有一些预定义的字符集: 字符集 . 表示任意一个字符 [abc] 表示字符a,b,c中的任意一个(与a|b|c相同) [^abc] 除a,b,c之外的任意一个字符(否定) [a-zA-Z] 从a到z或A到Z当中的任意一个字符(范围) [abc[hij]] a,b,c,h,i,j中的任意一个字符(与a|b|c|h|i|j相同)(并集) [a-z[hij]] h,i,j中的一个(交集) \s 空格字符(空格键, tab, 换行, 换页, 回车) \S 非空格字符([^\s]) \d 一个数字,也就是[0-9] \D 一个非数字的字符,也就是[^0-9] \w 一个单词字符(word character),即[a-zA-Z_0-9] \W 一个非单词的字符,[^\w] 如果你用过其它语言的正则表达式,那么你一眼就能看出反斜杠的与众不同。在其它语言里,\的意思是:“只是要在正则表达式里插入一个反斜杠。没什么特别的意思。”但是在Java里,\的意思是:“要插入一个正则表达式的反斜杠,所以跟在它后面的那个字符的意思就变了。”举例来说,如果你想表示一个或更多的单词字符,那么这个正则表达式就应该是\w+。如果你要插入一个反斜杠,那就得用\\。不过像换行,跳格之类的还是只用一根反斜杠:\n\t。 这里只给你讲一个例子;你应该JDK文档的java.util.regex.Pattern加到收藏夹里,这样就能很容易地找到各种正则表达式的模式了。 逻辑运算符 XY X 后面跟着 Y X|Y X或Y (X) 一个要匹配的组(capturing group). 以后可以用\i来表示第i个被匹配的组。 边界匹配符 ^ 一行的开始 $ 一行的结尾 \b 一个单词的边界 \B 一个非单词的边界 \G 前一个匹配的结束 举一个具体一些的例子。下面这些正则表达式都是合法的,而且都能匹配Rudolph: Rudolph [rR]udolph [rR][aeiou][a-z]ol.* R.* 数量表示符 数量表示符(quantifier)的作用是定义模式应该匹配多少个字符。 Greedy(贪婪的): 除非另有表示,否则数量表示符都是greedy的。Greedy的表达式会一直匹配下去,直到匹配不下去为止。(如果你发现表达式匹配的结果与预期的不符),很有可能是因为,你以为表达式会只匹配前面几个字符,而实际上它是greedy的,因此会一直匹配下去。 Reluctant(勉强的): 用问号表示,它会匹配最少的字符。也称为lazy, minimal matching, non-greedy, 或ungreedy。 Possessive(占有的): 目前只有Java支持(其它语言都不支持)。它更加先进,所以你可能还不太会用。用正则表达式匹配字符串的时候会产生很多中间状态,(一般的匹配引擎会保存这种中间状态,)这样匹配失败的时候就能原路返回了。占有型的表达式不保存这种中间状态,因此也就不会回头重来了。它能防止正则表达式的失控,同时也能提高运行的效率。 Greedy Reluctant Poss

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档