黑马程序员-----正则表达式
2015-05-09 17:01
316 查看
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
正则表达式:
作用 :用于专门操作字符串
好处:正则的出现,可以简化对字符串的复杂操作
特点:用于一些特定的符号来表示一些代码操作,这样就简化书写。所以学习正则表达式,就是在学习一些特殊符号的使用。
弊端:符号定义越多,正则越长,阅读性越差。符号的出现虽然简化了书写,但是却降低了阅读性。其实更多是用正则解决字符串操作的问题。
具体操作功能
1.匹配:
boolean matches(String regex) 方法,(告知此字符串是否匹配给定的正则表达式)用规则匹配整个字符串,只要有一处不符合规则,就匹配结束,返回false
校验手机号码
[java]
view plaincopy
/*
正则表达式,可以匹配尾号5连的手机号。规则: 第1位是1,第二位可以是数字3458其中之一,
后面4位任意数字,最后5位为任意相同的数字。
例如:18601088888、13912366666
*/
class Test9
{
public static void main(String[] args)
{
String regex="1[3458]\\d{4}(\\d)\\1{4}";
System.out.print("输入要检验的手机号码:");
Scanner sc=new Scanner(System.in); //接收键盘录入的电话号码,简单尝试IO流
boolean b=sc.matches(regex);//调用字符串的matches方法,并将boolean型结果赋给变量b
System.out.println("您输入的是"+b+"符合要求的电话号码");
}
}
string split(String reges)根据正则表达式的匹配拆分此字符串
String[]split(String reges,int linit)根据匹配给定的正则表达式来拆分此字符串。
splitDemo("zhangsan.lisi.wangwu","\\.");
按.切割"."因为.在正则里是任意字符所以要加\,但是一个\还不行, "."就被转义了所以要加两个
splitDemo("c:\\abc\\a.txt","\\\\");
按\\切割 ,一个会被转义,所以前面需要在加一个 也就是\\ \\
splitDemo("erkktyqqquizzzzzo","(.)\\1+");
按照叠词完成切割。为了可以让规则的结果被重用
可以将规则封装成一个组。用()完成。组的出现都有编号。
从1开始。 想要使用已有的组可以通过 \n(n就是组的编号)的形式来获取。
如果要是多组组成的话就看左括号
例如: ((A)(B(C)))就是4组
3.替换:
String replaceAll(String reges ,String replacement)使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
调用的是代码块中的函数。
String str = "wer1389980000ty1234564uiod234345675f";
replaceAllDemo(str,"\\d{5,}","#");
将字符串中的数组替换成#。 \\d是所有数字也就是0-9,{5,}代表五个或者五个以上的都替换成#.
String str1 = "erkktyqqquizzzzzo";
replaceAllDemo(str1,"(.)\\1+","$1");
将叠词替换成$. 将重叠的字符替换成单个字母。
(.)代表任意字符的组.\\1+代表获取上一个组,$1.是将组替换成一个.比如zzzz->z这个样子的意思
[java]
view plaincopy
public static void replaceAllDemo(String str, String reg, String newStr) {
str = str.replaceAll(reg, newStr);
System.out.println(str);
}
操作步骤:
(a)将正则表达式封装成对象,
(b)让正则对象和要操作的字符串相关联
(c)关联后,获取正则匹配引擎
(d)通过引擎对符合规则的子串进行操作,比如取出。
5.网页爬虫
[java]
view plaincopy
/*
网页爬虫(蜘蛛)
*/
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());
}
}
}
}
正则表达式:
作用 :用于专门操作字符串
好处:正则的出现,可以简化对字符串的复杂操作
特点:用于一些特定的符号来表示一些代码操作,这样就简化书写。所以学习正则表达式,就是在学习一些特殊符号的使用。
弊端:符号定义越多,正则越长,阅读性越差。符号的出现虽然简化了书写,但是却降低了阅读性。其实更多是用正则解决字符串操作的问题。
具体操作功能
1.匹配:
boolean matches(String regex) 方法,(告知此字符串是否匹配给定的正则表达式)用规则匹配整个字符串,只要有一处不符合规则,就匹配结束,返回false
校验手机号码
[java]
view plaincopy
/*
正则表达式,可以匹配尾号5连的手机号。规则: 第1位是1,第二位可以是数字3458其中之一,
后面4位任意数字,最后5位为任意相同的数字。
例如:18601088888、13912366666
*/
class Test9
{
public static void main(String[] args)
{
String regex="1[3458]\\d{4}(\\d)\\1{4}";
System.out.print("输入要检验的手机号码:");
Scanner sc=new Scanner(System.in); //接收键盘录入的电话号码,简单尝试IO流
boolean b=sc.matches(regex);//调用字符串的matches方法,并将boolean型结果赋给变量b
System.out.println("您输入的是"+b+"符合要求的电话号码");
}
}
2.切割:
string split(String reges)根据正则表达式的匹配拆分此字符串String[]split(String reges,int linit)根据匹配给定的正则表达式来拆分此字符串。
splitDemo("zhangsan.lisi.wangwu","\\.");
按.切割"."因为.在正则里是任意字符所以要加\,但是一个\还不行, "."就被转义了所以要加两个
splitDemo("c:\\abc\\a.txt","\\\\");
按\\切割 ,一个会被转义,所以前面需要在加一个 也就是\\ \\
splitDemo("erkktyqqquizzzzzo","(.)\\1+");
按照叠词完成切割。为了可以让规则的结果被重用
可以将规则封装成一个组。用()完成。组的出现都有编号。
从1开始。 想要使用已有的组可以通过 \n(n就是组的编号)的形式来获取。
如果要是多组组成的话就看左括号
例如: ((A)(B(C)))就是4组
3.替换:
String replaceAll(String reges ,String replacement)使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
调用的是代码块中的函数。
String str = "wer1389980000ty1234564uiod234345675f";
replaceAllDemo(str,"\\d{5,}","#");
将字符串中的数组替换成#。 \\d是所有数字也就是0-9,{5,}代表五个或者五个以上的都替换成#.
String str1 = "erkktyqqquizzzzzo";
replaceAllDemo(str1,"(.)\\1+","$1");
将叠词替换成$. 将重叠的字符替换成单个字母。
(.)代表任意字符的组.\\1+代表获取上一个组,$1.是将组替换成一个.比如zzzz->z这个样子的意思
[java]
view plaincopy
public static void replaceAllDemo(String str, String reg, String newStr) {
str = str.replaceAll(reg, newStr);
System.out.println(str);
}
4.获取:将字符串中的符合规则的子串取出
操作步骤:(a)将正则表达式封装成对象,
(b)让正则对象和要操作的字符串相关联
(c)关联后,获取正则匹配引擎
(d)通过引擎对符合规则的子串进行操作,比如取出。
5.网页爬虫
[java]
view plaincopy
/*
网页爬虫(蜘蛛)
*/
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());
}
}
}
}
相关文章推荐
- 黑马程序员--正则表达式
- 黑马程序员_正则表达式
- 黑马程序员_正则表达式
- 黑马程序员-java专题系列之1-正则表达式
- 黑马程序员—java技术blog—第七篇:正则表达式
- 黑马程序员技术博客之正则表达式
- 黑马程序员 java学习笔记--正则表达式
- 黑马程序员----JAVA基础之正则表达式
- 黑马程序员——Java String类 and 正则表达式(第七篇)
- 黑马程序员——java基础之正则表达式
- 黑马程序员——Java基础-----正则表达式
- 黑马程序员——正则表达式
- 黑马程序员--正则表达式(Java)
- 黑马程序员_java基础之正则表达式及API(StringBuffer和其它常用类)
- 黑马程序员:正则表达式
- 黑马程序员——正则表达式
- 黑马程序员--正则表达式和其他一些类--
- 黑马程序员--正则表达式知识点总结
- 黑马程序员Java__正则表达式
- 黑马程序员_正则表达式