设为首页 加入收藏

TOP

正则表达式基础及Java使用
2015-02-02 14:32:23 来源: 作者: 【 】 浏览:10
Tags:正则 表达式 基础 Java 使用

正则表达式基础


正则表达式语法(1)


普通字符:字母,数字,汉子,下划线以及没有特殊定义的标点符号都是“普通字符”。表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符


简单的转义字符:


\n :代表换行符


\t :代表制表符


\\ :代表\本身


\^ ......? :代表匹配这字符本身


正则表达式语法(2)


标准字符集合:


能够与多种字符匹配的表达式


注意区分大小写,大写是相反的意思


\d :任意一个数字,0~9中的任意一个


\w:任意一个字母或者下划线或者汉字,也就是A~Z,a~z,0~9中的任意一个


\s :包括空格,制表符,换行符等空白符中的任意一个。


.? :小数点可以匹配任意一个字符


正则表达式语法(3)


自定义字符集合:


[ ]方括号匹配方式,能够匹配方括号中任意一个字符


[ab5@]: 匹配方括号中的任意一个字符


[^abc]: 匹配除了abc以外的任意一个字符


[f-k]: 匹配“f”-“k”之间的任意一个字符


[^A-F0-3]: 匹配非A-F和非0-3的任意一个字符


正则表达式语法(4)


修饰匹配次数的特殊符号


{n}: 表达式重复n次


{m,n}: 表达式至少重复m次,最多重复n次


{m,}: 表达式至少重复m次


?: 匹配表达式0次或者1次,相当于{0,1}


+ : 表达式至少出现1次,相当于{1,}


*? : 表达式不出现或者出现任意次,相当于{0,}


匹配次数中的贪婪模式,(匹配字符愈多愈好,默认)


匹配次数中的非贪婪模式(匹配字符越少越好,修饰匹配次数的特殊符号后再加上一个“?“号)。例子:\d{2,4}?,这样就将模式改为非贪婪


正则表达式语法(5)


字符边界(本组标记匹配的不是字符而是位置,符合某种条件的位置)


^: 与字符串开始的位置匹配(以一行来算)


$: 与字符串结束的地方匹配


\b: 匹配单词边界? ? //比如boy\b? 则在boy右边不是边界的不匹配


在Java中使用正则表达式及常用函数


public class TestRegex {
?public static void main(String []args)
?{
? //Pattern p = Pattern.compile("^\\d{4}");? //在java中的反斜杠要用两个前面一个转义,因为\d中的\做反义用
? Pattern p = Pattern.compile("(\\d{4})([a-z]{2})");
? Matcher m = p.matcher("asdfsadfsafd2342314asdfsadf2342asdfsaf");
?
? System.out.println(m.matches());? //匹配整个目标字符串
? System.out.println(m.find());? ?//查找字符串
?
? List list = new ArrayList();? //用来存储找到的group
? while(m.find())? ? ? //m.find()找到一个后就去找下一个了
? {
? ?System.out.println(m.group());? //group(),group(0)的作用是一样的
? ?System.out.println(m.group(0));
? ?System.out.println(m.group(1));
? ?System.out.println(m.group(2));? //如果写3的话会超出范围
? ?list.add(m.group());
? }
?
? String []str = "aa33fdf55cc".split("\\d{2}");? //按照两个整数来切分
? String str2 ="asd2dsfdfds".replaceAll("\\ds", "**");? //将ds替换掉,生成新的字符串,因为前面是常量不可变
? System.out.println("asdfsdf".matches("\\w+"));? //匹配字符串
?}
}


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Java自制线程池 下一篇Shell 脚本基础 - 使用 if 语句进..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: