锁定老帖子 主题:Java正则表达式1
该帖已经被评为隐藏帖
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
作者 | 正文 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
发表时间:2008-08-17
最后修改:2009-04-16
Java正则表达式
字符类
说明:[]中只匹配单个字符. 因为-表示范围,所以要匹配-要使用\-。 预定义字符
量词
Greedy的表达式会一直匹配下去,直到匹配不下去为止。(如果你发现表达式匹配的结果和预期的不符),非常有可能是因为,你以为表达式会只匹配前面几个字符,而实际上他是greedy的,因此会一直匹配下去。 Reluctant 的表达式只匹配最少的字符。也称为lazy, minimal matching, non-greedy, 或ungreedy。 Possessive: 目前只有Java支持(其他语言都不支持)。用正则表达式匹配字符串的时候会产生非常多中间状态(一般的匹配引擎会保存这种中间状态),这样匹配失败的时候就能原路返回。占有型的表达式不保存这种中间状态,因此也就不会回头重来了。他能防止正则表达式的失控,同时也能提高运行的效率。
如:要匹配美国的社会安全号码, 这个号码的格式是999-99-9999或999999999(-可以不出现),正则表达式为:[0-9]{3}\-?[0-9]{2}\-?[0-9]{4}。 边界匹配符
说明:“^”如果用在[]括号内,表示“否”,即该字符除外。但用在[]括号外如“^X”则表示以行X开头。 \B 匹配非单词边界,"er\B" 能匹配 "verb" 中的 "er",但不能匹配 "never" 中的 "er"。 "\bev" 能匹配 "every" 中的 "ev",但不能匹配 "never" 中的 "ev"。 集合操作
如:java|hello 将匹配包含java或hello的字符串。 如:tool:(java|ruby|c),可以匹配tool:java,或tool:ruby,或tool:c,注意不能使用[],因为[]里面只能匹配单个字符。 如:(b│cd)ef 匹配包含 "bef" 或者 "cdef"的字符串. 如:"(a│b)*c": 匹配包含0个或多个a或b,后面跟一个c的字符串。
lxm整理,只为知识共享之用,所有内容均来自网络,内容归所有者。 2009.04.16
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
返回顶楼 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
浏览 1672 次