现在的位置: 首页 > 综合 > 正文

Java正则表达式

2018年05月22日 ⁄ 综合 ⁄ 共 1772字 ⁄ 字号 评论关闭

用途:

字符串匹配

字符串查找

字符串替换

例如:

IP地址是否正确

从网页中抓取Email地址

从网页中揪出超级连接

java.lang.String

java.util.regex.Pattern

java.util.regex.Matcher

首先最简单的正则表达式

package reg;

public class SimpleReg {

/**

 * @param args

 */

public static void main(String[] args) {

// TODO Auto-generated method stub

System.out.println("abc".matches("..."));

}

}

一个点代表一个字符, abc刚好3个字符

String str="a9729"中的数字换位-

//d表示一位数字

str.replaceAll("//d","-");

认识Pattern 

Pattern p = Pattern.compile("[a-z]");

匹配一个只有一位字符的串

Pattern p = Pattern.compile("[a-z]3");

匹配一个只有3位字符的串

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

//匹配过程中产生的值保存在m

M.matches();返回true

简写为"fgh".matches("[a-z]{3}");//return true

练习

"a".matches(".");true

"aa".matches("aa");true

"aa".matches("a*");true 代表0个或多个a

"aaaa".matches("a+");+代表一个或多个

"aaaa".matches("a?");?代表0个或一个 false

"".matches("a?");false

"192.168.0.aaa".matches(//d{1,3}//.//d{1,3}//.//d{1,3}//..{1,3}) true

"192".matches("[1][9][2]");

正则表达式范围

一个[]代表匹配一个字符

"a".matches("[abc]");true

"a".matches("[^abc]");表示除了abc外的任意字母,false

"A".matches("a-zA-Z")="A".matches("[a-z]|[A-Z]"); true

"A".matches("[A-Z]&&[RFG]");表示在A-Z范围内,且在RFG

认识/d 数字,/D非数字,/s一个空白字符,/w表示构成单词的字符a-z,A-Z,_

/W /w相反

//s{4}表示4个空白字符

"a_8".matches(/w{3});

"abc888&^%".matches("[a-z]{1,3}//d{3}[&^%]+")

Matches find lookingAt

Pattern p = Pattern.complie("//d{3,5}");

String s = "123-34445-234-00";

Matcher m =p.matcher(s);

P.matches(); ->false

M.reset();

p.matches();

M.find();找子串 return true

找到后会把123去掉

接着来

M.find();

M.start() m.end()相匹配的子串位置

会把344去了

m.lookingAt();每次重头上开始找

Pattern p = Pattern.complie("java",Pattern.Case_INSENSITIVE);

Matcher m =p.matcher("java Java jAv");

While(m.find())

{

System.out.println(m.group());

}

Pattern p =Pattern.compile("//d{3,5})([a-z]{2}");
String s ="123aa-34324-bb-234cc-00";

Matcher m = p.matcher(s);

While(m.find)

{

输出匹配的子串 M.group(1);

只打印数字

//m.group(2);

}

去除eclipse 中注释行 /\*\s+\d{0,3}\s+\*/

抱歉!评论已关闭.