----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
正则表达式:就是用操作字符串数据的规则表达式。
规则:就是用一些符号组成,每个符号都代表着特有的含义。
其实这些符号想当于对应着底层一段代码。对外提供符号是简化了操作。
弊端:必须要先学习这些符号。符号多了,阅读性会较差。
正则表达式对字符串的常见操作:
1,匹配。
使用的是String类中的matches方法。
2,切割。
使用的是String类中的split方法。
3,替换。
使用的是String类中的replaceAll方法。
4,获取。
将匹配的规则的内容获取出来。
使用到正则表达式对象。Pattern
使用步骤:
1,先将正则表达式编译成Pattern对象。
2,通过Pattern对象的matcher方法获取Matcher匹配器对象。
3,通过匹配器对象的方法,将正则规则作用到字符串上以便于操作。
练习:
需求:对QQ号进行校验。
要求:5~15 位,不能以0开头,必须是数字。
public static void main(String[] args) {
String QQ = "0123478";
String regex = "[1-9][0-9]{4,14}";//正则表达式
boolean b = QQ.matches(regex);
System.out.println(QQ+"::"+b);
}
练习:
获取字符串中的三个字母组成的单词
public static void getDemo(){
String str = "da jia zhu yi le ,yao pai wei dian ying la !";
String reg = "\\b[a-z]{3}\\b";//三个字母组成的单词都取出来。
\\b------\\b是边界,三个单词为一个边界
//正则规则被编译成Pattern对象。
Pattern p = Pattern.compile(reg);
//通过正则对象的方法matcher和字符串想关联获取匹配器对象。
Matcher m = p.matcher(str);
//使用匹配器的方法对字符串进行操作。
while(m.find()){
System.out.println(m.start()+"---"+m.group()+"----"+m.end());
}该单词在字符串中是从几号位到几号位 end()得到的末尾指针是不包括的 包头不包尾。
}
练习:
替换电话号码中段的四位号码。
public static void replaceAllDemo(){
// String str = "werqqtyuzzzio";
// str = str.replaceAll("(.)\\1+","$1");//后一个参数可以通过$数字 引用前一个参数中的组。
String str = "15812345678";
str = str.replaceAll("(\\d{3})\\d{4}(\\d{4})","$1****$2");
System.out.println(str);
}
练习:
切割
public static void splitDemo(){
// String str = "23 19 -1 9 56";
// String[] arr = str.split(" +");
// String str = "zhangsan.lisi.wangwu";
// String[] arr = str.split("\\.");
String str = "werqqtyuzzzio";
String[] arr = str.split("(.)\\1+");qq和zzz为分割符。重复多次字符的符合正则表达式。
for(String s : arr){
System.out.println(s);
}
}
练习:
我我我...我我...我要...要要..要要..学.学...学学..学学.编..编编编..编程...程程.程.程.程
要求:将该字符串变成 我要学编程。
public static void test_1(){
思路:
1,先去掉所有 . 替换。
2,叠词变成一个。替换。
String str = "我我我...我我...我要...要要..要要..学.学...学学..学学.编..编编编..编程...程程.程.程.程";
str = str.replaceAll("\\.+","");
System.out.println(str);
str = str.replaceAll("(.)\\1+", "$1");
System.out.println(str);
}
}
练习:
邮箱校验。
String mail = "abc23@sina.com.cn.di";
String reg = "[a-zA-Z_0-9]+@[a-zA-Z0-9]+(\\.[a-zA-Z]{2,}){1,3}";
练习:
网络爬虫。spider
是一段小程序,专门负责获取指定规则数据。
public static void getMailsByNet() throws IOException{
URL url = new URL("http://192.168.1.100:8080/myweb/mail.html");
BufferedReader bufr = new BufferedReader(new InputStreamReader(url.openStream()));
String line = null;
String mail_reg = "\\w+@\\w+(\\.\\w+)+";
Pattern p = Pattern.compile(mail_reg);
while((line=bufr.readLine())!=null){
Matcher m = p.matcher(line);
while(m.find()){
System.out.println(m.group());
}
}
}
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------