黑马程序员---JAVA基础--正则表达式(十六)
2013-12-29 22:40
295 查看
----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
一、正则表达式的概述
1、正则表达式是符合一定规则的表达式。
(1) 特点:用一些特定的符号来表示一些代码的操作,这样简化书写。
(2)作用:专门用于操作字符串。
(3)好处:可以简化对字符串的复杂操作。
(4)弊端:符号定义越多,正则越长,阅读性越差。
2、具体的操作功能
(1)匹配:String matches方法;
(2)切割:String split方法;
(3)替换:String replaceAll(regex,str);//如果regex中有定义组,可以在第二参数中通过$符号获取正则表达式中已有的组;
(4)获取:将字符串中符合规则的子串匹配取出。
3、使用技巧:到底用四种功能中的哪一个呢?或者哪几个呢?
思路方式:
1)如果只想知道该字符是否对是错,使用匹配。
2)想要将已有的字符串变成另一个字符串,替换。
3)想要按照自定的方式将字符串变成多个字符串。切割。获取规则以外的子串。
4)想要拿到符合需求的字符串子串,获取。获取符合规则的子串。
切割:获取规则以外的子串。 获取:获取符合规则的子串。
4、(1)字符类
[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]] a、e 或 f(交集)
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)
[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去)
(2)预定义字符类
. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]
(3)边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界
\B 非单词边界
\A 输入的开头
\G 上一个匹配的结尾
\Z 输入的结尾,仅用于最后的结束符(如果有的话)
\z 输入的结尾
(4)Greedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次。
二、经典案例
网页爬虫(蜘蛛)
----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
一、正则表达式的概述
1、正则表达式是符合一定规则的表达式。
(1) 特点:用一些特定的符号来表示一些代码的操作,这样简化书写。
(2)作用:专门用于操作字符串。
(3)好处:可以简化对字符串的复杂操作。
(4)弊端:符号定义越多,正则越长,阅读性越差。
2、具体的操作功能
(1)匹配:String matches方法;
(2)切割:String split方法;
(3)替换:String replaceAll(regex,str);//如果regex中有定义组,可以在第二参数中通过$符号获取正则表达式中已有的组;
(4)获取:将字符串中符合规则的子串匹配取出。
3、使用技巧:到底用四种功能中的哪一个呢?或者哪几个呢?
思路方式:
1)如果只想知道该字符是否对是错,使用匹配。
2)想要将已有的字符串变成另一个字符串,替换。
3)想要按照自定的方式将字符串变成多个字符串。切割。获取规则以外的子串。
4)想要拿到符合需求的字符串子串,获取。获取符合规则的子串。
切割:获取规则以外的子串。 获取:获取符合规则的子串。
4、(1)字符类
[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]] a、e 或 f(交集)
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)
[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去)
(2)预定义字符类
. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]
(3)边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界
\B 非单词边界
\A 输入的开头
\G 上一个匹配的结尾
\Z 输入的结尾,仅用于最后的结束符(如果有的话)
\z 输入的结尾
(4)Greedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次。
二、经典案例
网页爬虫(蜘蛛)
import java.io.*; import java.util.regex.*; import java.net.*; import java.util.*; class RegexTest2 { public static void main(String[] args) throws Exception { getMails_1(); } public static void getMails_1()throws Exception { URL url = new URL("http://192.168.1.254:8080/myweb/mail.html"); URLConnection conn = url.openConnection(); BufferedReader bufIn = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line = null; String mailreg = "\\w+@\\w+(\\.\\w+)+"; Pattern p = Pattern.compile(mailreg); while((line=bufIn.readLine())!=null) { Matcher m = p.matcher(line); while(m.find()) { System.out.println(m.group()); } } } /* 获取指定文档中的邮件地址。 使用获取功能。Pattern Matcher */ public static void getMails()throws Exception { BufferedReader bufr = new BufferedReader(new FileReader("mail.txt")); String line = null; String mailreg = "\\w+@\\w+(\\.\\w+)+"; Pattern p = Pattern.compile(mailreg); while((line=bufr.readLine())!=null) { Matcher m = p.matcher(line); while(m.find()) { System.out.println(m.group()); } } } }
----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net
相关文章推荐
- 黑马程序员-java基础 正则表达式
- 黑马程序员-Java基础总结14——正则表达式
- 黑马程序员——Java基础——String类、StringBuffer类、StringBuilder类、基本数据类型对象包装类操作、正则表达式应用
- 黑马程序员_java基础-正则表达式
- 黑马程序员 java基础之正则表达式
- 黑马程序员——JAVA基础---正则表达式---概述,匹配、切割、替换、提取,网页爬虫
- 黑马程序员——Java基础->正则表达式
- 黑马程序员——Java基础---正则表达式
- 黑马程序员——Java基础---正则表达式
- 黑马程序员-----Java基础-----正则表达式
- 黑马程序员----JAVA基础之正则表达式
- 黑马程序员————java基础————正则表达式
- 黑马程序员_Java基础_正则表达式_25
- 黑马程序员--java基础--正则表达式
- 黑马程序员——java基础——正则表达式
- 黑马程序员——高新技术---Java基础-常用类-正则表达式,Math类,Random类,System类,Date类
- 黑马程序员——Java基础-----正则表达式
- 黑马程序员 16 Java基础教学 - 16 - 正则表达式总结
- 黑马程序员---Java基础总结---正则表达式
- 黑马程序员 java基础之正则表达式