正则表达式/正规表达式/常规表达式
正则表达式/正规表达式/常规表达式. regex是正则表达式,前面的是返回值类型.全部都用字符串加点调用.replace是替换后的字符串. * [abcde] 可以匹配a 或者 b 或者c
* [^abce] 不能是 或者 b 或者 c
* [a-zA-z] 可以是 a-z或者是A-Z
* [a-zA-Z_0-9]
* d 数字0-9
* D 非数字
* w a-zA-Z_0-9
* W 不允许 出现 a-zA-Z_0-9
*
* 数量词
* ? 一次或者一次也没有
* * 零次或多次
* + 一次或者多次
* {n} 恰好n次
* {n,} 至少n次
* {n,m} 至少n次 不超过m次
String str =”92374923874”; //{4,14}是量词,表示前面的元素出现4(包含)到14(包含)次 Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches(); //判断是否完整匹配
在仅使用一次正则表达式时,可以方便地通过Pattern类的 compile方法来编译表达式并在单个调用中将输入序列与其匹配。如果完全匹配,则返回true:
boolean b = Pattern.matches(“a*b”,“aaaab”); 等效于上面的三个语句,尽管对于重复的匹配而言它效率不高,因为它不允许重用已编译的模式。 Pattern p = Pattern.compile("W(o.)(ld!)"); //第0组是整个模式串,第2组是第二个()中的内容
Matcher m = p.matcher("Hello,Wo6ld!4s56d4f65Wo8ld!156465 in Java.");
while(m.find()){//判断能不能找到下一个匹配
String s = m.group();//等价于m.group(0)
System.out.println(s);
int startIndex = m.start(0);//当前匹配串的第0组的起始下标
int endIndex = m.end(0);//当前匹配串的第0组的起始下标(不含)
System.out.println("group(0)的起始下标"+startIndex);
System.out.println("group(0)的结束下标"+endIndex);
}
Matcher类的方法: 查找e-mail
String content = "a;jfd;salkjfd===zhangsan@vip.sina.com.cn------lisi@sohu.com[][][sfsad";
Pattern p = Pattern.compile("w+@w+(.w+)+");
Matcher matcher2 = p.matcher(content);//声明的形参类型是CharSequence接口类型,实际传入的是String实现类对象
while(matcher2.find()){
System.out.println(matcher2.group());
} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |