----------------------android培训、java培训、期待与您交流!----------------------
正则表达式(英语:Regular Expression、regex或regexp,缩写为RE),也译为正规表示法、常规表示法,在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。
用一个对应的表达式操作字符串,对字符串进行匹配,替换,分割等操作。
优点是可以简化对字符串的复杂的操作,但是符合定义越多,正则越长,阅读性越差。
说明:X表示字符X或者匹配的规则。
正则表达式主要有四个应用:匹配、替换、切割、获取
使用String类中的boolean String.matches(String regex);方法。regex为规则,返回值为布尔值,若字符串中有符合正则表达式的字符串就返回true,否则返回false。
示例程序,判断一个号码是否是5连尾号的手机号:
public class PhoneNumber { public static void main(String[] args) { //自定义一个手机号 String s = new String("13866688888"); //调用检测函数 checkPhone5(s); } public static void checkPhone5(String s) { //正则表达式 后面是0到9有一位然后下一位与这位相同,还有4位,加起来就是5位 String regex_5 = "[1][3458][0-9]{4}([0-9])\\1{4}"; //正则匹配。。 boolean flag = s.matches(regex_5); //判断结果 if(flag) System.out.println("号码:"+s+"是尾号五连手机号"); else System.out.println("号码:"+s+"不是尾号五连手机号"); } }
方法:boolean String.replaceAll(regex);
方法:boolean String.split(regex);
毕老师的视频有讲到,这里利用到了正则表达式的四种应用,很好的实例。
import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; /* * 网页爬虫:其实就一个程序用于在互联网中获取符合指定规则的数据。 * * 爬取邮箱地址。 * */ public class RegexTest2 { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { List<String> list = getMailsByWeb(); for(String mail : list){ System.out.println(mail); } } public static List<String> getMailsByWeb() throws IOException { //1,读取源文件。 // BufferedReader bufr = new BufferedReader(new FileReader("c:\\mail.html")); URL url = new URL("http://192.168.1.100:8080/myweb/mail.html"); BufferedReader bufIn = new BufferedReader(new InputStreamReader(url.openStream())); //2,对读取的数据进行规则的匹配。从中获取符合规则的数据. String mail_regex = "\\w+@\\w+(\\.\\w+)+"; List<String> list = new ArrayList<String>(); Pattern p = Pattern.compile(mail_regex); String line = null; while((line=bufIn.readLine())!=null){ Matcher m = p.matcher(line); while(m.find()){ //3,将符合规则的数据存储到集合中。 list.add(m.group()); } } return list; } public static List<String> getMails() throws IOException{ //1,读取源文件。 BufferedReader bufr = new BufferedReader(new FileReader("c:\\mail.html")); //2,对读取的数据进行规则的匹配。从中获取符合规则的数据. String mail_regex = "\\w+@\\w+(\\.\\w+)+"; List<String> list = new ArrayList<String>(); Pattern p = Pattern.compile(mail_regex); String line = null; while((line=bufr.readLine())!=null){ Matcher m = p.matcher(line); while(m.find()){ //3,将符合规则的数据存储到集合中。 list.add(m.group()); } } return list; } }