import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
? 一次或一次也没有
* 零次或多次
+ 一次或多次
{n} 恰好n次
{n,}至少 n 次
{n,m} 至少 n 次,但是不超过 m 次
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)
[a-z&&[def]] d、e 或 f(交集)
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)
[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去)
^ 行的开头
$ 行的结尾
\b 单词边界
. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]
\\ 反斜线字符
*/
public class Regex {
public static void main(String[] args){
p("a".matches("."));//1个字符
p("aa".matches("aa"));
p("aaaa".matches("a*"));//0次或多次
p("aaaa".matches("a+"));//1次或多次
p("".matches("a*"));//0次或多次
p("aa".matches("a?"));//1次或0次
p("".matches("a?"));
p("a".matches("a?"));
p("1231231211212".matches("\\d{3,100}"));
p("192.168.0.2".matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}"));
p("392".matches("[0-2][0-9][0-9]"));
p("a".matches("[abc]"));
p("z".matches("[^abc]"));
p("A".matches("[a-zA-Z]"));
p("A".matches("[a-z]|[A-Z]"));
p("A".matches("[a-z[A-Z]]"));
p("12".matches("[0-9&&[1]]"));
p(" \n\r\t".matches("\\s{4}"));
p(" ".matches("\\s"));
p("a_8".matches("\\w{3}"));
p("abc88&^%".matches("[a-z]{1,3}\\d+[%^&^]+"));
p("\\".matches("\\\\"));
//0359-1234567 021-12345678
p("0359-1234567".matches("^\\d{4}-\\d{7}$|^\\d{3}-\\d{8}$"));
p("021-12345678".matches("\\d{4}-\\d{7}|\\d{3}-\\d{8}"));
p("hello sir".matches("^h.*"));
p("hello sir".matches(".*ir$"));
p("hello sir".matches("^h[a-z]{1,3}o\\s[a-z]+$"));
p("hellosir".matches("^h[a-z]{1,3}o\\b.*"));
p("\n".matches("^[\\s&&[\\n]]*\\n$"));
p("aaa 8888c".matches(".*\\d{4}."));
p("aaa 8888c".matches(".*\\b\\d{4}."));
p("aaa8888c".matches(".*\\d{4}."));
p("aaa8888c".matches(".*\\b\\d{4}."));
//abc@163.com
p("abc@163.com".matches("^.+@.+\\..+$"));
p("abc@163.com".matches("\\w[.-]+@\\w[.-]+\\.[\\w]+"));
Pattern p = Pattern.compile("java",Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher("java Java JAVA javA Ilove JAVa you hate JavA ddddadf");
StringBuffer buf = new StringBuffer();
int i=0;
while(m.find()){
i++;
if(i%2==0){
m.appendReplacement(buf, "java");
}else{
m.appendReplacement(buf, "JAVA");
}
}
m.appendTail(buf);
p(buf);
//分组
Pattern p1 = Pattern.compile("(\\d{3,5})([a-z]{2})");
String s = "321aa-11111bb-123cc-00";
Matcher m1 = p1.matcher(s);
while(m1.find()){
// p(m.group());
p(m1.group(1));
// p(m.group(2));
}
}
public static void p(Object s) {
System.out.println(s);
}
}