共计 1670 个字符,预计需要花费 5 分钟才能阅读完成。
download:Spark+ES+ClickHouse 构建 DMP 用户画像
package test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
- 正则表达式
- 正则表达式 的用法次要是 4 种方面的应用
- 匹配,宰割,替换,获取.
- 用一些简略的符号来代表代码的操作
- @author cyc
- */
public class Rex {
public static void main(String[] args) {
// 针对字符串解决
Rex reg = new Rex();
// 校验 qq 的 reg 正则表达式
// 这里的 \w 是指的是 [a-zA-Z0-9], 还有一个重要的是?,*.+ 这三个别离
//? 示意呈现 1 次或者 1 次都没有,//+ 示意呈现 1 次或者 n 次,//* 示意呈现 0 次或者 n 次,// 还有些非凡的写法 X{n} 恰好 n 次 X{n,} 至多 n 次,X{n,m}n 次到 m 次,String mathReg = "[1-9]\\d{4,19}";
String divisionReg = "(.)\\1+";
//\\b 是指的边界值
String getStringReg = "\\b\\w{3}\\b";
// 字符串匹配 (首位是除 0 的字符串)
reg.getMatch("739295732",mathReg);
reg.getMatch("039295732",mathReg);
// 字符串的替换
// 去除叠词
reg.getReplace("12111123ASDASDAAADDD",divisionReg,"$1");
// 字符串的宰割
// 切割叠词, 反复的
// 这里要晓得一个组的概念 (.)\\1 第二个和第一个至雷同
reg.getDivision("aadddddasdasdasaaaaaassssfq",divisionReg);
// 字符串的获取
// 当初获取三个字符串取出
reg.getString("ming tian jiu yao fangjia le",getStringReg);
}
/**
* 获取查问的字符串
* 将匹配的字符串取出
*/
private void getString(String str, String regx) {
//1. 将正在表达式封装成对象 Patten 类来实现
Pattern pattern = Pattern.compile(regx);
//2. 将字符串和正则表达式相关联
Matcher matcher = pattern.matcher(str);
//3.String 对象中的 matches 办法就是通过这个 Matcher 和 pattern 来实现的。System.out.println(matcher.matches());
// 查找合乎规定的子串
while(matcher.find()){
// 获取 字符串
System.out.println(matcher.group());
// 获取的字符串的首地位和末地位
System.out.println(matcher.start()+"--"+matcher.end());
}
}
/**
* 字符串的宰割
*/
private void getDivision(String str, String regx) {String [] dataStr = str.split(regx);
for(String s:dataStr){System.out.println("正则表达式宰割 ++"+s);
}
}
/**
* 字符串的替换
*/
private void getReplace(String str, String regx,String replaceStr) {String stri = str.replaceAll(regx,replaceStr) ;
System.out.println("正则表达式替换"+stri);
}
/**
* 字符串解决之匹配
* String 类中的 match 办法
*/
public void getMatch(String str, String regx){System.out.println("正则表白匹配"+str.matches(regx));
}
}
正文完