java正则表达式总结
package pack;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Demo {
public static void main(String[] args) {
//method1();//匹配
//method2();//切割
//method3();//替换
/*前面只是用了String的方法*/
method4();
}
public static void method1() {
String qq = "1881265";
String regex1 = "[1-9]\\d{4,14}";
sys(qq.matches(regex1)); //是否符合regex规则
String s = "e";
//String regex = "[a-zA-Z]"; // 字母
//String regex = "[a-d[m-p]]"; //a到d 或 m到p
/* \d 数字[0-9]
* \D 非数字[^0-9]
* \s 空白字符
* \S 非空白字符
* \w 单词字符[a-zA-Z0-9_]
* \W 非单词字符
*
*
*
* X? 一次或零次
* X* 零次或多次
* X+ 一次或多次
* X{n} 恰好n次
* X{n,} 至少n次
* X{n,m} n次到m次
*
*/
String regex = "\\d";
sys(s.matches(regex));
}
public static void method2() {
/*String s = "zhang li san";
String regex = "\\s+";
String[] arr = s.split(regex);
for(String ss : arr)
sys(ss);*/
/*
String s = "zhang.li.san";
String regex = "\\."; // \.代表正则表达式中的.即任意字符,\\.代表普通点,
不能直接用.切,它是特殊字符
String[] arr = s.split(regex);
for(String ss : arr)
sys(ss);*/
/*String s = "www\\abs\\1.txt";
String regex = "\\\\";
String[] arr = s.split(regex);
for(String ss : arr)
sys(ss);*/
String s = "wekkyduffopxxxs"; //按叠词切
/*按照叠词完成切割,为了让规则是结果被重用,可以将规则封装成一个组,用()完成,组都有编号,从1开始*/
String regex = "(.)\\1+"; //括号是组的概念,\1是再次出现,\1+是一次或多次
String[] arr = s.split(regex);
for(String ss : arr)
sys(ss);
}
public static void method3() {
String s = "wj3374zns399nvn9999klf3333"; //将数字替换为#号
String regex = "[0-9]";
s.replaceAll(regex, "#");
sys(s);
/*String s = "wekkyduffopxxxs"; //将叠词替换为单个,如:zzzz->z
String regex = "(.)\\1+";
s.replaceAll(regex, "$1");
sys(s);*/
}
public static void method4() {
String s = "zhas asb cjcdj csj cbbdv";
String regex = "[a-z]{3}";
//将规则封装成对象
Pattern p = Pattern.compile(regex);
//获取匹配器对象
Matcher m = p.matcher(s);
sys(m.matches()); //匹配全部,为false,注意:指针向后移了,会影响下面的结果
while(m.find()) {
sys(m.group()); //匹配到的字符串
sys(m.start()+"..."+m.end()); //匹配到的字符串起止位
}
}
public static void sys(Object obj) {
System.out.println(obj);
}
}
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。