正则表达式(专题)

来源:互联网 发布:花生壳用自己的域名 编辑:程序博客网 时间:2024/06/05 23:46

一、特点

1.符合一定的规则的表达式。
2.作用:用于专门操作字符串。
特点:用一些特定的符号来表示一些代码操作,这样简化书写。
这里写图片描述

3.具体操作功能:

1) 匹配:String matches方法。

字符类:

  • [abc]:表示相应字符位必须是a或b或c;
public class Test01 {    public static void main(String[] args) {        demo();    }    public static void demo(){        String str = "a";        String reg = "[bcd]";//第一个字符必须是b或c或d。        System.out.println(str.matches(reg));    }}}//结果:false
  • [a-zA-Z]:必须是字母:
    注:位数
    这里写图片描述
    预定义字符:
  • \d:注意,用是写成\d ,第一个\是转义
String str = "a8";String reg = "[a-zA-Z]\\d";//只能校验两位数,代替了上面的[0-9]System.out.println(str.matches(reg));
  • \w:单词字母(邮箱常用)
    数量词:
  • X? ,X+ ,X{n} ,X{n,} ,X{n,m}

**2)切割**String split();
正则表达式:
弊端:符号定义越多,正则越长,阅读性越差。
这里写图片描述
**3)替换:**replaceAll()

public class Test01 {    public static void main(String[] args) {        replaceDemon("123456kuuusk1234op","\\d{5,}","#"); //将数字超过5个的替换成#        replaceDemon("ghhhdsk55dj","(.)\\1+","&"); //把叠词替换成&        replaceDemon("yyyyyjdhs77777","(.\\1+)","$1");//$表示获取第几个组。功能将重叠的字符替换成单个字母。    }        public static void replaceDemon(String str,String reg,String newStr){                str = str.replaceAll(reg, newStr);                System.out.println(str);            }        }/*结果:#kuuusk1234opg&dsk&djyyyyyjdhs77777*/

4)获取:
将字符串中符合规则的子串取出
操作步骤:
1)将正则表达式封装成对象
2)让正则对象和要操作的字符串相关联
3)关联后,获取正则匹配引擎
4)通过引擎对符合规则的子串进行操作,比如取出。
注:导包import java.util.regex.*;

public class Test01 {    public static void main(String[] args) {        getDemon();    }        public static void getDemon(){                String str = "mng dksja ks dks sdjf djf";                String reg = "\\b[a-z]{3}\\b"; // \b单词边界                //将规则封装成对象                Pattern p = Pattern.compile(reg);                //让正则对象和要做用的字符串相关联,获取匹配器对象,                Matcher m = p.matcher(str);                System.out.println(m.matches());                while(m.find())//返回boolean类型,先find才能group取出                {                System.out.println(m.group());//group是获取匹配后的结果,所以应该先find                }    }}
0 0