正则表达式
发布时间:2020-12-13 22:53:09 所属栏目:百科 来源:网络整理
导读:正则表达式: 用于操作 字符串 的一些规则表达式。规则也就是一些符号,被赋予了特定的含义,其实这些符号低层都对应 着一段代码,java将这些符号进行了封装而已,这样做无非就是为了便于操作方便书写。 正则表达式对字符串的常见操作,一共分四种。 1.匹配
|
正则表达式: 用于操作字符串的一些规则表达式。规则也就是一些符号,被赋予了特定的含义,其实这些符号低层都对应 着一段代码,java将这些符号进行了封装而已,这样做无非就是为了便于操作方便书写。 正则表达式对字符串的常见操作,一共分四种。 1.匹配。 使用的是String类中的matches()。 <span style="font-size:18px;">//匹配演示。
String str="aooz";
/*
*Greedy 数量词
*o?:一个或没有 .
*o+:一个或多个。
*o*:一个没有或多个。
*/
String regex="ao*z";
boolean b= str.matches(regex);
//校验QQ号
//5-15位
//不能以开头
//必须全是数字
String qq="123456789";
String regex2="[1-9][d]{4,14}";
boolean b2 =qq.matches(regex2);
System.out.println(qq+"::"+b2);</span>
2.切割。 使用的是String类中的split()。 <span style="font-size:18px;"> //切割演示
private static void splitDemo() {
//把数字切出来
// String str="23 34 56 11 22 33";
// String[] arr=str.split(" +");//+,一个或多个
//. -->是转义-->也是转义-->.
//在正则中.有特定含义,代表的是任意字符。
// String str="hbb.hy.college";
// String[] arr=str.split(".");
//使用叠词来切,叠词:qq zzz vvvv
String str="dfsflkdsfqqdfsafkiozzzkdfasfasvvvvkdfl";
//.是代表任意字符,()是封装成一组的意思。捕获组。
//1-->转义成1.意欲为引用前面哪一组。
//+:一个或多个。详情查阅API.
String[] arr=str.split("(.)1+");
for(String s :arr)
System.out.println(s);
}</span>
3.替换。 使用的是String类中的replaceAll()。 <span style="font-size:18px;">// 替换演示
private static void replaceAllDemo() {
//将叠词替代成一个,qq-->q zzz-->z vvvv-->v
// String str="dfsflkdsfqqdfsafkiozzzkdfasfasvvvvkdfl";
// String newStr=str.replaceAll("(.)1+","$1");//后一个参数可以通过$数字来引用前一个参数的组。
//加密手机号码:如 18316699418 -->183****9418
String str="18316699418";
String newStr=str.replaceAll("(d{3})(d{4})(d{4})","$1****$3");//封装成3个组。
System.out.println(newStr);
}</span>
4.获取 <span style="font-size:18px;">// 获取演示。
private static void getDemo() {
/*
* 很遗憾String类中没有提供相对应的方法,所以必须使用到一个Pattern类,Pattern是一个正则对象。
* 其实String类中那些用到正则的方法,也是间接调用这个Pattern类的方法。
*/
String str="i believe i can fly,this is regex demo ";
String regex="b[a-z]{3}b";
//1.将正则表达式编译成Pattern对象
Pattern p =Pattern.compile(regex);
//2.通过p的matcher方法获取相对应的Matcher匹配器对象。得到Matcher匹配器是为了得到更广泛的应用。
Matcher m=p.matcher(str);
//3.通过匹配器对象的方法将正规则表达式作用于字符串。
while(m.find()){//匹配到规则的内容 返回true
//m.group(),得到内容
//m.start(),开始位置
//m.end(),结束位置,
//注意:包含头不包含尾。
System.out.println(m.start()+":::"+m.group()+":::"+m.end());
}
}
// 替换演示
private static void replaceAllDemo() {
//将叠词替代成一个,qq-->q zzz-->z vvvv-->v
// String str="dfsflkdsfqqdfsafkiozzzkdfasfasvvvvkdfl";
// String newStr=str.replaceAll("(.)1+","$1****$3");//封装成3个组。
System.out.println(newStr);</span> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
