码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA基础--正则表达式

时间:2016-04-11 18:38:20      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:

.  any character

\d  A digit 0-9

\D  a non-digit [^0-9]

\s  a whitespace character, 空白字符

\S  a non-whitespace character

\w  a word character   [a-zA-Z0-9]

\W  a non-word character

package DAO;

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



public class TestReg {
	public static void main(String[] args) throws Exception{
		/*System.out.println("abc".matches("..."));  //true          ctrl+shift+/ 注释
		System.out.println("a898938593a".replaceAll("\\d","-"));  //a---------a
		Pattern p = Pattern.compile("[a-z]{3}");    //匹配具有3个字符的字符串
		Matcher m =  p.matcher("abc");
		System.out.println(m.matches());          //true
		*/
		
		//初步认识 . * + ?, meta characters		
		/*p("a".matches(".")); // true 
		p("aa".matches("aa")); // true 
		p("aaaa".matches("a*"));   // true 0或者n
		p("aaaa".matches("a+")); // true 1或者n
		p("aaaa".matches("a?")); // false 0或者1
		p("".matches("a*"));    // true 0或者n
		p("".matches("a+")); // true 1或者n
		p("".matches("a?"));    // true 0或者1
		p("215454545454545".matches("\\d{3,100}"));    // true  3~100个
		p("192.168.000.111".matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}"));           //true
		p("192".matches("[0-2][0-9][0-9]"));  //true
		*/
		//范围
		/*p("a".matches("[abc]"));       // true  []取出一个字符
		p("a".matches("[^abc]"));       // false  []取出一个字符
		p("A".matches("[a-zA-Z]"));       // true  []取出一个字符
		p("A".matches("[a-z]|[A-Z]"));       // true  []取出一个字符
		p("A".matches("[a-z[A-Z]]"));       // true  []取出一个字符
		p("R".matches("[A-Z&&|[RFG]]"));       // true  []取出一个字符
		*/
		//认识 \s \w \d
		/*p(" \n\r\t".matches("\\s{4}"));  //true  4个空白字符
		p(" ".matches("S"));   //false  S代表非空白字符
		p("a_8".matches("\\w{3}"));  //true
		p("abc888&^%".matches("[a-z]{1,3}\\d+[&^$%]+"));  //true   1-3个字母, 1或n个数字, [&^$%]里任意1或n个
		p("\\".matches("\\\\"));  //正则表达式里 2个\\只代表一个转义字符
		*/
		
		//POSIX Style 
		//p("a".matches("\\p{Lower}"));
		
		//boundary
		/*p("hello sir".matches("^h.*"));  //true
		p("hello sir".matches(".*ir$"));  //true
		p("hello sir".matches("^h[a-z]{1,3}o\\b.*"));  //true
		p("hellosir".matches("^h[a-z]{1,3}o\\b.*"));  //true  \b是空格, 换行等单词边界
		*/
		
		//white lines 空白行
		//p(" \n".matches("^[\\s&&[^\\n]]*\\n$"));  //true 开头是空白符, 而且不是回车, 0或n次, 后面紧跟着换行符
		
		
		//practice
		/*p("aaa 8888c".matches(".*\\d{4}."));  //true  0或n个字母, 4位数字, 然后有一个字母
		p("aaa 8888c".matches(".*\\b\\d{4}."));  //true  0或n个字母, 4位数字前面有个单词边界, 然后有一个字母
		p("aaa8888c".matches(".*\\d{4}."));  //true  0或n个字母, 4位数字, 然后有一个字母
		p("aaa8888c".matches(".*\\b\\d{4}."));  //false  0或n个字母, 4位数字前面没有单词边界, 然后有一个字母
		*/
		
		//email
		//p("adjkfjdksjfdksfjd@djfkjdkjsfd.com".matches("[\\w[.-]]+@[\\w[.-]]+\\.[\\w]+"));  //true
		
		
		//matches  find lookingAt    start  end       matches每次找整个串, find找字串, lookingAt每次都从头找
		/*Pattern p = Pattern.compile("\\d{3,5}");
		String s = "123-34345-234-00";
		Matcher m = p.matcher(s);
		p(m.matches()); //把123-给吃了, 所以要reset以下. 否则, 如果不reset的话, 只有2个true 34345  234
		m.reset();      //为了把matches吃掉的字符恢复
		p(m.find());  //true 找一个匹配的字串 123
		p(m.start()+"-"+m.end());  //0-3
		p(m.find()); //true 找一个匹配的字串 34345
		p(m.start()+"-"+m.end());  //4-9
		p(m.find());//true找一个匹配的字串234
		p(m.start()+"-"+m.end());  //10-13
		p(m.find());  // false 00
		p(m.lookingAt());  //true  只从head开始找, 所以是123
		p(m.lookingAt());  //true  只从head开始找, 所以是123
		p(m.lookingAt());  //true  只从head开始找, 所以是123
		p(m.lookingAt());  //true  只从head开始找, 所以是123
		*/
		
		//replacement
		Pattern p = Pattern.compile("java",Pattern.CASE_INSENSITIVE);
		Matcher m = p.matcher("java Java JAVa JaVa IloveJAVA you hateJava");
		StringBuffer buf = new StringBuffer();
		int i=0;
		/*while(m.find()){
			p(m.group());  //列出所有java字样的
		}
		*/
		while(m.find()){
			i++;
			if(i%2==0){
				m.appendReplacement(buf, "java");   //偶数都是java
			}
			else{
				m.appendReplacement(buf, "JAVA");//奇数都是JAVA
			}
			
		}
		m.appendTail(buf);
		p(buf);  //列出所有java字样的	
		
	}
	public static void p(Object o){
		System.out.println(o);
	}
}

  

JAVA基础--正则表达式

标签:

原文地址:http://www.cnblogs.com/wujixing/p/5379414.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!