java正则表达式的几个例子

正则表达式可以很方便地处理字符串。下面做了一个小小的总结,用几个例子说明。虽然不是很全面,但应该可以应对大部分的情况吧。

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {
	
	/*
	 * Pattern类常用的方法有三个:
	 * Pattern pattern()
	 * Matcher matcher(CharSequence),可以传入一个String字符串
	 * String[] split(CharSequence)
	 * */
	Pattern p;
	
	
	Matcher m;
	
	//文字替换
	public void replaceTest(){
		p = Pattern.compile("java");
		m = p.matcher("java i love you.oh,my java!");
		System.out.println(m.replaceFirst("c++"));
		
		m = p.matcher("java i love you.oh,my java!");
		System.out.println(m.replaceAll("c++"));		
	}
	
	/*
	 * ^为限制开头,如果在[]里面的话表示取反,如:[^abc],除abc之外的字符
	 * .代表除\n之外的字符
	 * *代表任意多的前一个字符
	 */
	public void checkStart(){
		p = Pattern.compile("^java.*");
		m = p.matcher("java开头的哦");
		System.out.println("开头测试:"+m.matches());
	}
	
	/*
	 * $为限制结尾
	 * */
	public void checkEnd(){
		p = Pattern.compile(".*java$");
		m = p.matcher("结尾是java");
		System.out.println("结尾测试:"+m.matches());
	}
	
	/*
	 * []表示特定条件, 如:[abcd]表示a或b或c或d
	 * +表示至少一次
	 * */	
	public void splitWith(){
		p = Pattern.compile("[, ]+");
		String[] ss = p.split("hello every   one,,,,i love you");//以逗号空格分割字符串
		for(String s:ss){
			System.out.println(s);
		}
	}
	
	public void search(){
		p = Pattern.compile("java",Pattern.CASE_INSENSITIVE);//忽略大小写
		m = p.matcher("java JAva");
		while(m.find()){
			System.out.println(m.group());//将匹配到的字符串抓出来
		}
	}
	
	/*
	 * j{2}表示两个j,j{2,5}表示2到5个j,j{2,}表示2个以上j
	 * ?表示任意多个特定字符
	 * [0-9]表示0到9任意一个数字
	 * */
	public void f(){
		p = Pattern.compile(".{2,5}[0-9]");//匹配二到五个字符加一个数字,其中二到五尽可能往大了匹配
		m = p.matcher("ab3c3abc2d3");
		while(m.find()){
			System.out.println(m.group());//将匹配到的字符串抓出来
		}
		
		p = Pattern.compile(".{2,5}?[0-9]");//与上面的相反,尽可能往小了匹配
		m = p.matcher("ab3c3abc2d3");
		while(m.find()){
			System.out.println(m.group());//将匹配到的字符串抓出来
		}
		
		p = Pattern.compile(".{2,5}+[0-9]");
		m = p.matcher("ab3c3abc2d3");
		while(m.find()){
			System.out.println(m.group());//将匹配到的字符串抓出来
		}
		
		p = Pattern.compile(".{3}");
		m = p.matcher("ab3c3abc2d3");
		System.out.println("---");
		while(m.find()){
			System.out.println(m.group());//将匹配到的字符串抓出来
		}
	}
	
	/*
	 * \\d表示数字,\\D非数字
	 * \\w表示字符,包括大小写,数字,\\W非字符
	 * \\s空白符,制表回车换行空格,\\S非空白符
	 * \t制表
	 * \n换行
	 * \r回车
	 * \\\\匹配一个\,在java中\\表示一个\
	 * */
	public void f2(){
		p = Pattern.compile("\\d{3}[a-z]{2}");
		m = p.matcher("231cd332de");
		System.out.println("---");
		while(m.find()){
			System.out.println(m.start()+"-"+m.end()+":"+m.group());//将匹配到的字符串抓出来
		}
		
		p = Pattern.compile("[\\\\]\\S{2,}");
		m = p.matcher("\\+-8");
		System.out.println("---");
		while(m.find()){
			System.out.println(m.start()+"-"+m.end()+":"+m.group());//将匹配到的字符串抓出来
		}
		
		p = Pattern.compile("(\\d{2,5})([a-z]{2})");
		m = p.matcher("23456789aa");
		System.out.println("---");
		while(m.find()){
			System.out.println(m.start()+"-"+m.end()+":"+m.group());//将匹配到的字符串抓出来
		}
	}
	
	/*
	 * |表示或的关系
	 * */
	public void f3(){
		p = Pattern.compile("[abc]|d{3}");
		m = p.matcher("addd");
		System.out.println("---");
		while(m.find()){
			System.out.println(m.start()+"-"+m.end()+":"+m.group());//将匹配到的字符串抓出来
		}
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Test t = new Test();
		t.replaceTest();
		t.checkStart();
		t.checkEnd();
		t.splitWith();
		t.search();
		t.f();
		t.f2();
		t.f3();
	}

}

注释已经说得很详细了,不在赘言。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值