黑马程序员--面向对象十一:正则
来源:互联网 发布:什么是社交数据 编辑:程序博客网 时间:2024/05/22 11:37
--------------JavaEE+Android+IOS开发、android培训、期待与您交流! ---------------
正则表达式:符合一定规则的表达式,它用于操作字符串,这样就简化对字符串的复杂操作。不过符号定义越多,正则越长,阅读性就会越差。
字符类
[abc]
[^abc]
[a-zA-Z]
[a-d[m-p]]
[a-z&&[def]]
[a-z&&[^bc]]
[a-z&&[^m-p]]
预定义字符类
.
\d
\D
\s
\S
\w
\W
"."是正则表达式里面的符号。它代表任意字符。所以,当想要用正常的.来切割的时候,就需要对正则表达式中的.进行转义。也就是\.
Greedy
X?
X*
X+
X{n}
X{n,}
X{n,m}
边界匹配器
^
$
\b
\B
\A
\G
\Z
\z
组
当想要对一个规则的结果进行重用,可以把这个规则封装成组,装进()中,这样这个组里的结果就可以重用。组从第一组开始标号。通过\N(n就是组的编号)的形式来表示捕获的组的内容,即表示当前这位上的规则要使用的规则就是那一组的规则的结果的重用。
Eg:
规则(.)\1中表示第一位是任意字符,第二位是对第一位的结果的重用。当把这个规则封装进String中时,要对\进行转义。即:"(.)\\1"
怎么看分辨组:一对括弧一组。按照括弧的顺序对组从1开始编号。
$的用法
【通过$n可以获取到前面的规则中的第N组的结果。】
eg:
replaceAllDemo(Str,"(.)\\1+","$1").$1表示获取(.)这个组的结果来使用。
具体操作功能
1.匹配:
String类中的matches(regex)方法,用规则匹配字符串,只要有一处不符合规则就匹配结束,返回false
2.切割:
String类中的split(String
3.替换
String类中的replaceAll(String
4.获取
将字符串中符合规则的子串取出
1.把正则封装成pattern对象.static
2.把正则对象和字符串关联
3.在匹配器中查找符合规则的字符串
4.取出这个字符串
①.Pattern类
static
Matcher
②.Matcher类
匹配器:同一个匹配器中使用同一个索引
通过解释
创建匹配器后,可以使用它执行三种不同的匹配操作:
matches
lookingAt
find
boolean
String
得先找后获取:
while(find()){ group()}Eg:String str="";String regexstr="";Pattern p =Pattern.compile(String regexstr)//创建正则对象Matcher m = p.matcher(str);//字符串与正则对象关联while(m.fing())//查找{ m.group();//取出}
思路方式:
1,如果只想知道该字符是否对是错,使用匹配。
2,想要将已有的字符串变成另一个字符串,替换。
3,想要按照自定的方式将字符串变成多个字符串。切割。获取规则以外的子串。
4,想要拿到符合需求的字符串子串,获取。获取符合规则的子串。
实例:网页爬虫/*网页爬虫(蜘蛛)*/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.112: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()); } } }}
--------------JavaEE+Android+IOS开发、android培训、期待与您交流! ---------------
- 黑马程序员--面向对象十一:正则
- 黑马程序员 面向对象
- 黑马程序员---面向对象
- 黑马程序员-面向对象
- 黑马程序员-面向对象
- 黑马程序员-面向对象
- 黑马程序员--面向对象
- 黑马程序员-面向对象
- 黑马程序员--面向对象
- 黑马程序员--面向对象
- 黑马程序员-面向对象
- 黑马程序员--面向对象
- 黑马程序员-面向对象
- 黑马程序员-----面向对象
- 黑马程序员 面向对象
- 黑马程序员---面向对象
- 黑马程序员--面向对象
- 黑马程序员---面向对象
- Git详解之三:Git分支
- IOS程序国际化
- 无法连接上 cn.archive.ubuntu.com:80 (123.129.214.98)。 - connect (111: 拒绝连接)
- XIB Code Generation
- 大话设计模式十二:外观模式(facade)
- 黑马程序员--面向对象十一:正则
- ios项目icon和default图片命名规则
- Java求解立方根
- Git详解之四:服务器上的Git
- 一周观察:Container是PaaS的未来吗?
- 要事第一
- Extjs4布局详解
- 高性能MySql进化论(四):Summary,Cache,Counter表的使用
- 什么是cmnet和cmwap