随笔分类 -  正则表达式

java正则表达式(十一)
摘要:十一、贪婪与懒惰当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。以这个表达式为例:a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配。有时,我们更需要懒惰匹配,也就是匹配尽可能少的字符。前面给出的限定符都可以被转化为懒惰匹配模式,只要在它后面加上一个问号?。这样.*?就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。现在看看懒惰版的例子吧:a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab 阅读全文

posted @ 2012-10-29 21:04 loritin 阅读(385) 评论(0) 推荐(1)

java正则表达式(十)
摘要:十、零宽断言 接下来,我们讲解正则表达式中的高级技术:零宽断言 (?=exp)也叫零宽度正预测先行断言,它断言自身出现的位置的前面能匹配表达式exp。比如\b\w+(?=ing\b),匹配以ing结尾的单词的前面部分(除了ing以外的部分),如查找I'm singing while you're d 阅读全文

posted @ 2012-10-28 19:56 loritin 阅读(404) 评论(0) 推荐(0)

java正则表达式(九)
摘要:九、后向引用在正则表达式中,后向引用用于重复搜索前面某个分组匹配的文本,例如,\1代表分组1匹配的文本,同理,\2将匹配第二个子表达式,\3将匹配第三个,依此类推,难以理解?请看示例:在以下一段html文本中:<BODY><H1>Welcome to my Homepage</H1>Content is divided into two sections:<BR><H2>ColdFusion</H2>Information about Macromedia ColdFusion.<H2>Wireless< 阅读全文

posted @ 2012-10-25 22:29 loritin 阅读(661) 评论(0) 推荐(0)

java正则表达式(八)
摘要:八、分组我们已经提到了怎么重复单个元素(直接在元素后面加上限定符就可以了),如果要重复多个元素该怎么办?你可以用小括号来指定子表达式(也叫做分组),然后你就可以指定这个子表达式重复的次数了。在正则表达式中,被小括号括起来的子表达式称为捕获组,正则表达式在求值期间将保存匹配这些捕获组表达式的输入子序列。一旦完全匹配操作完成,这些保存的代码片断可通过确定相应的组号从 Matcher对象上重新获取。捕获组可以嵌套使用,数量可以通过从左到右计算左括弧(开括号)得到。无论整个表达式是否有子组,它的捕获组总能记为组零(group zero)。例如,正则表达式 A((B)(C(D)))可能有的捕获组编号如下 阅读全文

posted @ 2012-10-23 21:12 loritin 阅读(394) 评论(0) 推荐(0)

java正则表达式(七)
摘要:七、重复在正则表达式中,我们通常会在编写正则表达式时,对元素进行重复匹配,我们可以通过限定符来实现重复匹配,常用限定符如下:代码/语法说明*重复零次或更多次+重复一次或更多次?重复零次或一次{n}重复n次{n,}重复n次或更多次{n,m}重复n到m次代码示例如下: 1 public class RegExp { 2 private Pattern patt; 3 private Matcher matcher; 4 private String regExpValue(String regStr,String regex){ 5 String value=... 阅读全文

posted @ 2012-10-19 20:53 loritin 阅读(281) 评论(0) 推荐(0)

java正则表达式(六)
摘要:六、字符转义如果你想查找元字符本身,比如你查找“.”,“*”,就会出现问题,因为你没办法指定它们,它们会被解释成正则表达式。这时,我们就要用\来取消这些字符的特殊意义,让正则表达式进行匹配时,将它们翻译为普通的字符串。因此,我们应该使用\.,\*,当然要查找\本身,必须使用\\。比如:unibetter\.com匹配unibetter.com,C:\\Windows匹配C:\Windows。注:正则表达式会在你提供的字符串中翻译\。另外在字面量的String中,java编译器要求各个\需要有两个\,即如果你想在正则表达式中转移一个\,那么,你在编译过的String中需要两\。如果在编译的正则字 阅读全文

posted @ 2012-10-18 21:47 loritin 阅读(315) 评论(0) 推荐(0)

java正则表达式(五)
摘要:五、元字符在前面几节中,我们在用正则表达式进行匹配时,都是通过指定的元素进行匹配,但是,我们在实际开发中,正则表达式通常都是按照一定的规律进行匹配,如何实现呢?利用元字符可以达到这种匹配效果。元字符,即字符、数字、汉字等元素的简写,正则表达式通过元字符进行匹配时,可简化正则的复杂度,同时,能让正则符合一定的规律进行匹配,常用元字符如下:代码说明.匹配除换行符以外的任意字符\w匹配字母或数字或下划线或汉字\s匹配任意的空白符(空格,制表符(Tab),换行符,中文全角空格等)\d匹配数字\b匹配单词的开始或结束^匹配字符串的开始$匹配字符串的结束\W匹配任意不是字母,数字,下划线,汉字的字符\S匹 阅读全文

posted @ 2012-10-16 21:20 loritin 阅读(406) 评论(0) 推荐(1)

java正则表达式(四)
摘要:四、非匹配在正则表达式中,我们往往需要在字符串中进行非匹配,这时,就要通过^进行匹配条件限制,^的常见入门用法如下:[^a-z] 条件限制在非小写a to z范围中一个字符[^A-Z] 条件限制在非大写A to Z范围中一个字符[^a-zA-Z] 条件限制在非小写a to z或大写A to Z范围中一个字符[^0-9] 条件限制在非0 to 9范围中一个字符[^0-9a-z] 条件限制在非0 to 9或a to z范围中一个字符代码示例如下: 1 public class RegExp { 2 private Pattern patt; 3 private Matcher... 阅读全文

posted @ 2012-10-15 21:16 loritin 阅读(300) 评论(0) 推荐(0)

java正则表达式(三)
摘要:三、括号、或匹配在正则表达式中,由于[]号只能做单个元素的匹配,这样会限制正则表达式的作用,如何做到多个元素的匹配呢?用()实现。()可以进行多个元素的匹配,例如:t(a|e|i|o|oo)n,|在正则表达式中代表“或”的意思,即匹配的字符串只要满足()中任意一项元素的匹配,该正则表达式则返回true,见代码示例: 1 public class RegExp { 2 private Pattern patt; 3 private Matcher matcher; 4 /** 5 * 括号、或匹配:想要匹配“toon”,可以使用“|”操作符。“|”操作符的基本意义就... 阅读全文

posted @ 2012-10-14 19:13 loritin 阅读(431) 评论(0) 推荐(3)

java正则表达式(二)
摘要:二、方括号匹配在上一节中,我们讲到了,利用通配符可以匹配任意元素,但是,我们在实际开发中,往往会只匹配指定的元素,如何来实现呢?在正则表达式中,[]是对指定的元素进行匹配,只有在[]里的元素才能参与匹配。注:[]只能匹配单个字符,也就是说,正则表达式“t[aeio]n”只匹配“tan”、“Ten”、“tin”和“ton”,但“Toon”不匹配。见代码示例: 1 public class RegExp { 2 private Pattern patt; 3 private Matcher matcher; 4 /** 5 * 方括号匹配: 只有方括号里面指定的字符... 阅读全文

posted @ 2012-10-13 13:35 loritin 阅读(392) 评论(0) 推荐(1)

java正则表达式(一)
摘要:在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。下面从最简单的正则表达式开始,循序渐进,达到逐渐了解正则表达式的目的。一、通配符在对网页内容、文本进行匹配时,往往我们需要能够一种通配符能够匹配所有字符,包括空格、Tab字符甚至换行符等。在正则表达式中,通配符为“.” ,能够匹配任意字符,见代码示例:public class RegExp { private Pattern patt; private Matcher matcher; /** * 通配符匹配: .符号在正则表达式中... 阅读全文

posted @ 2012-10-11 21:46 loritin 阅读(544) 评论(0) 推荐(1)

导航