025.1 正则表达式 常用功能

内容:正则表达式是什么?为什么会有正则表达式?正则表达式常用功能

#####################正则表达式是什么?

正则表达式是用于匹配想要的规则的字符串,如:

var str = "abc123def";
var patt1 = /[0-9]+/;
document.write(str.match(patt1));

patt1 就是一个 正则表达式,这里是匹配数字,要匹配其他,当然要学规则

 

#####################为什么会有正则表达式?

有匹配字符串的需求,比如上面例子,如果数字更长,我们又要取出,用代码编写就会比较复杂,如果使用正则,每次都是使用这个方法,熟悉后,编写迅速,太多就不写了,啰嗦

 

 

###############################################################################常用功能

###############规则

 java 中要重复出现

 

###################Java正则常用功能

//####切割

private static void splitDemo()
{
    String temp = "awelafew##aewwoeif$$$$fewaigaxxxxoaigjwkqqqqqq";
    String regex = "(.)\\1+";   //重复数量大于1
    String[] names = temp.split(regex);
    for(String name:names){
        System.out.println(name);
    }
}

与正则匹配的字符为:
##
ww
$$$$
xxxx
qqqqqq

调用结果:输出

awelafew
ae
oeif
fewaiga
oaigjwk

 

这里通过下面这个例子理解重复问题。

([0-9])\1{5} 或 ([\d])\1{5} 连续相同的6位数字 如:333333
([0-9a-zA-Z])\1{5}   连续相同的6位数字或字母 如:222222 cccccc ZZZZZZ
([\d])\1{2}([a-z])\2{2} 连续相同3位数字后根连续相同的三位小写字母 如:222www
([\d])\1{2}([a-z])\2{2}|([a-z])\3{2}([\d])\4{2} 同上,但是能匹配数字+字母或字母+数字 如:222www 或 www222
这么多的例子自己可以扩展,要注意的就是 \1 \2代表位置,从左到右递增

所以上面的正则是可以改成(.)\\1{1,}

 

//####替换

{
    String num = "15722226666";
    num = num.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
    //在方法多参数时,后面的参数可以通过  $编号 的形式取到前一个参数的组
    System.out.println(num);
}

调用结果:输出

157****6666

 

 //####获取
实现获取:将符合规则的内容提取出来
用正则表达式对象。java.util.regex.Pattern
1.将字符串规则封装成Pattern对象。Pattern.compile(regex)
2.通过正则对象获取匹配器对象。用对将正则规则作用到要操作的字符串上
3.通过匹配器对象的方法,对字符串进行操作
Pattern p = Pattern.compile("a*b");  
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();

Matcher类
• matches 方法尝试将整个输入序列与该模式匹配。
• lookingAt 尝试将输入序列从头开始与该模式匹配。
• find 方法扫描输入序列以查找与该模式匹配的下一个子序列。

 String
group() 返回由以前匹配操作所匹配的输入子序列。

单词边界:\\b

步骤:
1、获取Pattern类
2、Pattern类和Matcher关联
3、匹配
4、获取

 

private static void getDemo()
{
    String source = "aix awefawe wega aiq wea fwa gal aweflia";
    String regex = "\\b[a-zA-Z]{3}";                       // 开头以字母开始,选取前面三个
    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(source);
    while(m.find()){
        System.out.println(m.group());
    }
}

 

posted @ 2018-09-17 15:37  Alos403  阅读(298)  评论(0编辑  收藏  举报