025.1 正则表达式 常用功能

Posted -nbloser

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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());
    }
}

 









































以上是关于025.1 正则表达式 常用功能的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript中 正则表达式的使用 及 常用正则表达式

常用模块-正则re

通过 Java 正则表达式提取 semver 版本字符串的片段

1000行代码徒手写正则表达式引擎--JAVA中正则表达式的使用

python--(常用模块-3正则表达式)

python--(常用模块-3-正则表达式)