第二十五天
正则表达式:符合一定规则的表达式,专门用来操作字符串
好处:可以简化对字符串的复杂操作
弊端:符号定义越多正则越长阅读性越差
具体操作功能:
1,匹配:String matches方法,用规则匹配整个字符串一处不符合即为false
2,切割:String split();
3,替换:replaceAll("(.)//1","$1");$1表示替换为替换为第一个组的数据
4,获取:将字符串中符合规则的子串取出; 操作步骤:1,将正则封装成对象 2,让正则对象和要操作的字符串相关联 3,关联后,获取正则匹配引擎 4,对子串操作
String matches方法查阅正则规则
校验qq号码规则:
String qq = 32434554d;要求不以0开头;都是数字;5-15位
String regex = "[1-9][0-9]{4,14}";定义规则1-9开头,第二位可选0-9,往后适用4-14皆可
boolean falg = qq.matches(regex);判断是否符合定义规则
if(falg)
System.out.println(qq+"符合");
else
System.out.println(qq+"不符合");
splitDemo("dssfjdddsffdsfjj","(.)\\1+");叠词切割,将规则封装成一个组用()组都有编号,从1开始使用已有的组\n(n为组的编号)来获取
获取:
import java.util.regex.*;
class RegexDemo
{
public static void main(String[]args)
{
String str = "ming tian jiu yao fang jia le";
String reg = "\\b[a-z]{4}\\b";定义规则\\b表示单词分割符
规则封装成对象
Pattern p = Pattern.compile(reg);
将正则对象和要作用的字符串相关联
Matcher m = p.matcher(str);
while(m.find())如果存在符合规则
{
m.group();获取符合规则的字符串
m.start();获取开始的位置 m.end();获取结束的位置
}
}
}
将字符串变成:"我要学编程"
import java.util.regex.*;
class Demo
{
public static void main(String[]args)
{
String str = "我我我....我我...要要....要要要...学学学...学学...编编..编编编程..程程";
str = str.replaceAll("\\.","");
str = str.replaceAll("(.)\\1+","$1");
System.out.println(str);
}
}
邮箱地址进行校验:
public static void checkMail()
{
String mail = "fdfksdf@qq.com";
String reg = "[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+";较为精确
reg = "\\w+@\\w+()\\.\\w+)+";不太精确
mail.matches(reg);
}
王璐爬虫获取邮箱地址:
import java.io.*;
import java.util.regex.*;
import java.net.*;
class RegexDemo
{
public static void main(String[]args)
{
URL url = new URL("www.baidi.com");
URLConnection conn = url.openConnection();
BufferedReader bufr = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = null;
String mailreg ="\\w+@\\w+()\\.\\w+)+";
Pattern p = Pattern.compile(mairlreg);
while (m.find())
{
System.out.println(m.group());
}
}
}