2018-08-27 正则表达式

符号:

x.任意一个字符

x* 0或多个

x+  1或多个

x? 0或1个

正则表达式比java表达加一个\

\\.匹配.   java:\.

\\\\匹配\   java:\\

[a-z]{3}匹配a-z 三个

[abc]匹配其中一个

[^abc]匹配除其中的

[a-zA-Z] = [a-z] | [A-Z] = [a-z[A-z]]或

[A-Z&&[RFG]]和

^开头^h

$结尾ir$


\d[0-9]一个数字

\D[^0-9]

\s[\t\n\xOB\f\r]

\S[^\s]

\w[a-zA-Z_0-9]

\W[^\w]

\b单词边界

  

X{n}n次

X{n,}至少n次

X{n,m}至少n,不超过m次


函数:

p("abc".matches("..."));

=

P("a345a".replaceAll("\\d","-"));替换

Pattern p=Pattern.compile("[a-z]{3}"); //编译,效率高

Matcher m = p.matcher("fgh");

p(m.matches());

//Matcher()匹配整个字符串,匹配的字符被吃掉,包括不匹配的那个

P(m.find());

//find()找到一个子串,并在主串去掉,可继续再找

m.reset();//字符恢复

P(m.lookingAt());

//lookingAt()从开始的位置开始找子串

P(m.start() + ”-” + m.end);

//start();找子串的起始位置,未找到报错

//end();找子串的结束位置,未找到报错

Pattern p=Pattern.compile("java",Pattern.CASE_INSENSITIVE);//忽略大小写

Matcher m = p.matcher("fgh");

m.replaceAll(“JAVA”);//替换,返回字符串


Pattern p=Pattern.compile("java",Pattern.CASE_INSENSITIVE);

Matcher m = p.matcher("java javA");

while(m.find())

System.out.println(m.group());//打印匹配的串


//奇数替换为小写,偶数大写

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 p=Pattern.compile(“(\\d{3,5})([a-z]{2})”);

Matcher m = p.matcher("123aaa-34345bb-234cc-00");

while(m.find());

System.out.println(m.group(1));//打印第一组匹配的串,即找到后打印 123


统计换行符:

P(“ \n”.match(“^[\\s&&[^\\n]]*\\n$”))

匹配e-mail:

P(“ adffsf.Com”.match(“[\\w[.-]]+@[\\w[.-]]+\\.[\\w]+”))

你可能感兴趣的:(2018-08-27 正则表达式)