您的位置:首页 > 编程语言 > Java开发

JavaSE基础:正则表达式

2013-01-06 18:09 525 查看
  -------
android培训、java培训、期待与您交流! ----------

正则表达式用来操作字符串数据。
字符类 

[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](减去) 

  
预定义字符类 

. 任何字符(与行结束符可能匹配也可能不匹配) 

\d 数字:[0-9] 

\D 非数字: [^0-9] 

\s 空白字符:[ \t\n\x0B\f\r] 

\S 非空白字符:[^\s] 

\w 单词字符:[a-zA-Z_0-9] 

\W 非单词字符:[^\w] 

边界匹配器 

^ 行的开头 

$ 行的结尾 

\b 单词边界 

\B 非单词边界 

\A 输入的开头 

\G 上一个匹配的结尾 

\Z 输入的结尾,仅用于最后的结束符(如果有的话) 

\z 输入的结尾 

  
Greedy 数量词 

X? X,一次或一次也没有 

X* X,零次或多次 

X+ X,一次或多次 

X{n} X,恰好 n 次 

X{n,} X,至少 n 次 

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

捕获组(.),引用\\1,引用上一个参数的组$1

常见操作:
1、匹配


String str = "asdfg";

String regex = "\w{5}";

Boolean b = str.matchs(regex);//---匹配结果b为true
2、切割

String regex = "d";

String[] strs = str.split(regex);
3、替换

String tel = "15800001111";//158****1111;

tel = tel.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
4、查找

String str = "da jia hao,ming tian bu fang jia!";

String regex = "\\b[a-z]{3}\\b";

//1,将正则封装成对象。

Pattern p = Pattern.compile(regex);

//2, 通过正则对象获取匹配器对象。 

Matcher m = p.matcher(str);

while(m.find()){
System.out.println(m.group());//获取匹配的子序列
System.out.println(m.start()+":"+m.end());

}

获取网页中邮箱程序

public static List<String> getMailsByWeb() throws IOException {

URL url = new URL("http://192.168.1.66:8080/myweb/mail.html");

BufferedReader bufIn = new BufferedReader(new InputStreamReader(url.openStream()));

//2,对读取的数据进行规则的匹配。从中获取符合规则的数据.
String mail_regex = "\\w+@\\w+(\\.\\w+)+";

List<String> list = new ArrayList<String>();

Pattern p = Pattern.compile(mail_regex);

String line = null;

while((line=bufIn.readLine())!=null){

Matcher m = p.matcher(line);
while(m.find()){
//3,将符合规则的数据存储到集合中。
list.add(m.group());
}

}
return list;
}


  -------
android培训、java培训、期待与您交流! ----------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息