黑马程序员_正则表达式
2013-11-01 20:45
155 查看
----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流!
----------------------
1.正则表达式:符合一定规律的表达式。
作用:用于专门操作字符
特点:通过一些特定符号来操作字符串
好处:专门用于操作字符串,可以简化对字符串的复杂操作。
弊端:符号定义越多,正则越长,阅读性越差
Greedy 数量词
X?X,一次或一次也没有
X*X,零次或多次X+X,一次或多次
X{n}X,恰好 n 次
X{n,}X,至少 n 次
X{n,m}X,至少 n 次,但是不超过 m 次
2.具体操作功能:
(1)匹配:String matches
用规则匹配指定字符串,字符串必须全部符合规则,如果有一处不符合规则,返回false。
(2)切割:String split
\有转义的效果
()代表组,组按顺序编号(从1开始) 组中的内容可以被重用 ,想要使用组的内容,可以使用\n(n是组的标号)来获取 如"(.)\\1+"
(3)替换:String replace
String str1 = "erkktyqqquizzzzzosfddd";//将重叠的字符替换成单个字符 使用$
replaceAllDemo(str1,"(.)\\1+","$1");//使用$加组号
(4)获取:将字符串中符合规则的子串取出
3.操作步骤:
(1)将正则表达式封装成对象。
(2)让正则对象和要操作的字符串相关联。
(3)关联后,获取正则匹配引擎。
(4)通过引擎对符合规则的子串进行操作,比如取出。
4.邮箱验证:
String reg = "\\w{6,12}@\\w+(\\.[a-zA-Z]+)+";//精确匹配
String reg = "\\w+@\\w+(\\.\\w+)+";//相对笼统的匹配
5.IP地址排序:
6.获取网页上的邮箱地址(网页爬虫):
----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流!
----------------------
1.正则表达式:符合一定规律的表达式。
作用:用于专门操作字符
特点:通过一些特定符号来操作字符串
好处:专门用于操作字符串,可以简化对字符串的复杂操作。
弊端:符号定义越多,正则越长,阅读性越差
字符 | |
---|---|
x | 字符 x |
\\ | 反斜线字符 |
\0n | 带有八进制值 0 的字符 n (0 <= n <= 7) |
\0nn | 带有八进制值 0 的字符 nn (0 <= n <= 7) |
\0mnn | 带有八进制值 0 的字符 mnn(0 <= m <= 3、0 <= n <= 7) |
\xhh | 带有十六进制值 0x 的字符 hh |
\uhhhh | 带有十六进制值 0x 的字符 hhhh |
\t | 制表符 ('\u0009') |
\n | 新行(换行)符 ('\u000A') |
\r | 回车符 ('\u000D') |
\f | 换页符 ('\u000C') |
\a | 报警 (bell) 符 ('\u0007') |
\e | 转义符 ('\u001B') |
\cx | 对应于 x 的控制符 |
字符类 | |
[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] |
X?X,一次或一次也没有
X*X,零次或多次X+X,一次或多次
X{n}X,恰好 n 次
X{n,}X,至少 n 次
X{n,m}X,至少 n 次,但是不超过 m 次
2.具体操作功能:
(1)匹配:String matches
用规则匹配指定字符串,字符串必须全部符合规则,如果有一处不符合规则,返回false。
(2)切割:String split
\有转义的效果
()代表组,组按顺序编号(从1开始) 组中的内容可以被重用 ,想要使用组的内容,可以使用\n(n是组的标号)来获取 如"(.)\\1+"
(3)替换:String replace
String str1 = "erkktyqqquizzzzzosfddd";//将重叠的字符替换成单个字符 使用$
replaceAllDemo(str1,"(.)\\1+","$1");//使用$加组号
(4)获取:将字符串中符合规则的子串取出
3.操作步骤:
(1)将正则表达式封装成对象。
(2)让正则对象和要操作的字符串相关联。
(3)关联后,获取正则匹配引擎。
(4)通过引擎对符合规则的子串进行操作,比如取出。
4.邮箱验证:
String reg = "\\w{6,12}@\\w+(\\.[a-zA-Z]+)+";//精确匹配
String reg = "\\w+@\\w+(\\.\\w+)+";//相对笼统的匹配
5.IP地址排序:
/* 192.68.1.254 102.49.23.013 10.10.10.10 2.2.2.2 8.109.90.30 将ip地址进行地址段顺序的排序。 还按照字符串自然顺序,只要让它们每一段都是3位即可。 1,按照每一段需要的最多的0进行补齐,那么每一段就会至少保证有3位。 2,将每一段只保留3位。这样,所有的ip地址都是每一段3位。 */ public static void ipSort() { String ip = "192.68.1.254 102.49.23.013 10.10.10.10 2.2.2.2 8.109.90.30"; ip = ip.replaceAll("(\\d+)","00$1"); System.out.println(ip); ip = ip.replaceAll("0*(\\d{3})","$1"); System.out.println(ip); String[] arr = ip.split(" "); TreeSet<String> ts = new TreeSet<String>(); for(String s : arr) { ts.add(s); } for(String s : ts) { System.out.println(s.replaceAll("0*(\\d+)","$1")); } } }
6.获取网页上的邮箱地址(网页爬虫):
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培训、期待与您交流! ----------------------
相关文章推荐
- 黑马程序员-----正则表达式
- 黑马程序员_正则表达式
- 黑马程序员_java正则表达式
- 黑马程序员-->09_正则表达式
- 黑马程序员——Java正则表达式
- 黑马程序员——06 正则表达式
- 黑马程序员:Java基础总结----正则表达式
- 黑马程序员—正则表达式
- 黑马程序员_java高新技术之_正则表达式
- 黑马程序员_正则表达式
- 黑马程序员——正则表达式
- 黑马程序员--一十四、正则表达式
- 黑马程序员_day29_正则表达式
- 黑马程序员——正则表达式
- 黑马程序员--第二十五天:正则表达式
- 黑马程序员-学习-正则表达式
- 黑马程序员———正则表达式及其其他类
- [黑马程序员] 我给大家讲解正则表达式(一)
- 黑马程序员-java学习笔记-正则表达式
- 黑马程序员—Java基础—正则表达式