黑马程序员_正则表达式
2014-01-04 16:18
447 查看
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
一、qq号码验证
对qq号码进行验证,要求qq号码符合三个条件1,5~15位,2,不能以0开头,3,只能是数字。
1,普通验证
2,采用正则表达式的方式
通过两个程序可以看出,普通方式需要使用大量的ife-lse语句依次对每个条年进行判断,而使用正则表达式判断要简洁多。因此正则表达式用于处理字符串更加灵活。
二、正则表达式
符合一定规则的表达式,专门用于操作字符串,简化字符串操作
1,正则表达式的常见规则
[align=left] 三、正则表达式-匹配[/align]
[align=left] String类的 matches(String regex)方法,告知此字符串是否匹配给定的正则表达式[/align]
[align=left] 需求:验证电子邮件的格式[/align]
[align=left]四、正则表达式-切割[/align]
[align=left] String类的split(String regex)方法,根据给定正则表达式匹配拆分此字符串[/align]
[align=left] 1,普通切割[/align]
[align=left] 2,利用组捕获--按叠词切割[/align]
[align=left] 正则表达式中用()定义组,利用\引用定义的组,组数默认从1开始[/align]
[align=left] 需求: 形如"abqqqqqcdettfdhhgtnssth"的字符串中含有叠词如qqqqq,按照这些叠词将字符串切割[/align]
[align=left] 2.1,第一位可以是任意字符,因此定义 .[/align]
[align=left] 2.2,将其定义成组(.)[/align]
[align=left] 2.3,第二位引用第一位组\\1,出现1或多次\\1+[/align]
[align=left] 2.4,完整的定义规则为:(.)\\1+[/align]
[align=left]五、正则表达式-替换[/align]
String类的replaceAll(String regex, String replacement)方法,使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串
[align=left] 需求:将字符串"helllowssorrrrrld"中叠词如lll替换成单个字符l[/align]
[align=left] 1,定义叠词规则:(.)\\1+[/align]
[align=left] 2,替换的内容引用被替换的内容,使用$引用,标号由1开始[/align]
[align=left]六、正则表达式-获取[/align]
使用的是java.util.regex.Pattern,和java.util.regex.Matcher
[align=left] 1,步骤[/align]
[align=left] 1.1,定义正则表达式规则 [/align]
1.2,将正则封装成对象
1.3,正则对象与要操作的字符串匹配,获取搜索引擎
[align=left] 1.4 使用Matcher类的方法 进行查找与获取[/align]
[align=left] 2,程序示例,需求:"wo de jia zai yuan fang ni mei qu guo",找出三个字母的单词[/align]
2.1,定义正则规则:\\b[a-zA-Z]{3}\\b
2.2,封将正则封装成对象:Pattern p = Pattern.compile(reg)
[align=left] 2.3,获取搜索引擎:Matcher m = p.matcher(str)[/align]
[align=left] 2.4,通过Matcher查找,获取[/align]
[align=left]七、正则表达式总结[/align]
[align=left] 1,只想知道字符串是否是对错,选择匹配[/align]
[align=left] 2,将已有字串变成另一个字串,选择替换[/align]
[align=left] 3,想要按特定方式将字串变成多个子串,选择切割[/align]
[align=left] 4,拿到符合规则的子串,选择获取[/align]
[align=left]八、网页邮箱爬虫[/align]
1,定义满足邮箱格式的正则表达式规则:String reg = "[a-zA-Z_0-9]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+"
2,利用URLConnection建立 资源连接
[align=left] 3,利用流读取 网页内容[/align]
[align=left] 4,对读取的内容进行查找和获取[/align]
[align=left]
[/align]
[align=left] [/align]
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
详细请查看:<a href="http://edu.csdn.net" target="blank">http://edu.csdn.net</a>
一、qq号码验证
对qq号码进行验证,要求qq号码符合三个条件1,5~15位,2,不能以0开头,3,只能是数字。
1,普通验证
public class CheckQQ { public static void main(String[] args) { String qq = "23343434"; check_qq(qq); } private static void check_qq(String qq) { if(qq.length()>=5&qq.length()<=15) { if(!qq.startsWith("0")) { try { Long l = Long.parseLong(qq); System.out.println(l+"is ok"); } catch (Exception e) { System.out.println("非法字符"); } }else { System.out.println("不能以0开头"); } }else { System.out.println("长度错误"); } } }//打印23343434is ok
2,采用正则表达式的方式
public class CheckQQ { public static void main(String[] args) { String qq = "23345434"; check_qq(qq); } private static void check_qq(String qq) { String regex = "[1-9][0-9]{4,14}"; boolean flag = qq.matches(regex); if(flag) { System.out.println(qq+"is ok"); } else { System.out.println("不存在"); } } }//打印23345434is ok
通过两个程序可以看出,普通方式需要使用大量的ife-lse语句依次对每个条年进行判断,而使用正则表达式判断要简洁多。因此正则表达式用于处理字符串更加灵活。
二、正则表达式
符合一定规则的表达式,专门用于操作字符串,简化字符串操作
1,正则表达式的常见规则
[align=left] 三、正则表达式-匹配[/align]
[align=left] String类的 matches(String regex)方法,告知此字符串是否匹配给定的正则表达式[/align]
[align=left] 需求:验证电子邮件的格式[/align]
private static void check_matches() { String email = "shisong@163.com"; String regex = "[a-zA-Z_0-9]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+"; boolean b = email.matches(regex); System.out.println(b); }
[align=left]四、正则表达式-切割[/align]
[align=left] String类的split(String regex)方法,根据给定正则表达式匹配拆分此字符串[/align]
[align=left] 1,普通切割[/align]
public static void method_split(){ String str = "192 168 3 123"; String[] arr = str.split("(.)\\1+"); for(String s : arr){ System.out.println(s); } }//打印:192,168,3,123
[align=left] 2,利用组捕获--按叠词切割[/align]
[align=left] 正则表达式中用()定义组,利用\引用定义的组,组数默认从1开始[/align]
[align=left] 需求: 形如"abqqqqqcdettfdhhgtnssth"的字符串中含有叠词如qqqqq,按照这些叠词将字符串切割[/align]
[align=left] 2.1,第一位可以是任意字符,因此定义 .[/align]
[align=left] 2.2,将其定义成组(.)[/align]
[align=left] 2.3,第二位引用第一位组\\1,出现1或多次\\1+[/align]
[align=left] 2.4,完整的定义规则为:(.)\\1+[/align]
public static void method_split(){ String str = "abqqqqqcdettfdhhgtnssth"; //正则组,()专门处理叠词 String[] arr = str.split("(.)\\1+"); for(String s : arr){ System.out.println(s); } }//打印结果:ab,cde,fd,gtn,th
[align=left]五、正则表达式-替换[/align]
String类的replaceAll(String regex, String replacement)方法,使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串
[align=left] 需求:将字符串"helllowssorrrrrld"中叠词如lll替换成单个字符l[/align]
[align=left] 1,定义叠词规则:(.)\\1+[/align]
[align=left] 2,替换的内容引用被替换的内容,使用$引用,标号由1开始[/align]
public static void method_replaceAll(){ String str = "helllowssorrrrrld"; String s = str.replaceAll("(.)\\1+","$1"); System.out.println(s); }//打印:helowsorld
[align=left]六、正则表达式-获取[/align]
使用的是java.util.regex.Pattern,和java.util.regex.Matcher
[align=left] 1,步骤[/align]
[align=left] 1.1,定义正则表达式规则 [/align]
1.2,将正则封装成对象
1.3,正则对象与要操作的字符串匹配,获取搜索引擎
[align=left] 1.4 使用Matcher类的方法 进行查找与获取[/align]
[align=left] 2,程序示例,需求:"wo de jia zai yuan fang ni mei qu guo",找出三个字母的单词[/align]
2.1,定义正则规则:\\b[a-zA-Z]{3}\\b
2.2,封将正则封装成对象:Pattern p = Pattern.compile(reg)
[align=left] 2.3,获取搜索引擎:Matcher m = p.matcher(str)[/align]
[align=left] 2.4,通过Matcher查找,获取[/align]
public static void method(){ String str = "wo de jia zai yuan fang ni mei qu guo"; //找出3个字母的单词 //预编译正则 String reg = "\\b[a-zA-Z]{3}\\b"; Pattern p = Pattern.compile(reg); //正则规则,匹配字符串 Matcher m = p.matcher(str); while(m.find()){ System.out.println(m.group()); } }//打印结果:jia,zai,mei,guo
[align=left]七、正则表达式总结[/align]
[align=left] 1,只想知道字符串是否是对错,选择匹配[/align]
[align=left] 2,将已有字串变成另一个字串,选择替换[/align]
[align=left] 3,想要按特定方式将字串变成多个子串,选择切割[/align]
[align=left] 4,拿到符合规则的子串,选择获取[/align]
[align=left]八、网页邮箱爬虫[/align]
1,定义满足邮箱格式的正则表达式规则:String reg = "[a-zA-Z_0-9]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+"
2,利用URLConnection建立 资源连接
[align=left] 3,利用流读取 网页内容[/align]
[align=left] 4,对读取的内容进行查找和获取[/align]
import java.net.*; import java.util.regex.*; import java.io.*; class CatchEmail { public static void main(String[] args) throws Exception { String reg = "[a-zA-Z_0-9]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+"; URL url = new URL("http://www.taobao.com"); //开启连接 URLConnection conn = url.openConnection(); BufferedReader bfr = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line = null; while((line = bfr.readLine())!=null){ Pattern p = Pattern.compile(reg); Matcher m = p.matcher(line); while(m.find()){ System.out.println(m.group()); } } } }
[align=left]
[/align]
[align=left] [/align]
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
详细请查看:<a href="http://edu.csdn.net" target="blank">http://edu.csdn.net</a>
相关文章推荐
- 黑马程序员 JAVA学习笔记 —— 正则表达式
- 黑马程序员-------正则表达式
- 黑马程序员---正则表达式
- 黑马程序员 正则表达式
- 黑马程序员--正则表达式
- 黑马程序员——18Java正则表达式及应用
- 黑马程序员__正则表达式
- 黑马程序员--JAVA<正则表达式>
- 黑马程序员----JAVA----正则表达式
- 黑马程序员——java之正则表达式
- 黑马程序员_正则表达式
- 黑马程序员--正则表达式(regex)
- 黑马程序员_JAVA:正则表达式
- 黑马程序员_正则表达式
- 黑马程序员--正则表达式
- 黑马程序员——java基础_正则表达式
- 黑马程序员——java基础-正则表达式
- 黑马程序员_StringBuffer&a 4000 mp;正则表达式总结
- 黑马程序员——正则表达式
- 黑马程序员---自学随堂笔记----正则表达式