标签:
. 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); } }
标签:
原文地址:http://www.cnblogs.com/wujixing/p/5379414.html