本系列文章,记录自己平时的一些代码,目的是为了做到不重复造轮子
package com.study.demo.utils;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
正则表达式匹配邮箱规则
*/
public class PatternUtil {
private static final String email_pattern = "^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9\u4e00-\u9fa5]+(\.[a-zA-Z0-9\u4e00-\u9fa5]+)+$";
private static final Pattern EMAIL_PATTERN = Pattern.compile(email_pattern);
public static void main(String[] args) {
String test1 = "xxxxxxx@163.com";
System.out.println(isValidatedEmail(test1));
System.out.println(test1.matches(email_pattern));
}
public static boolean isValidatedEmail(String email) {
Matcher matcher = EMAIL_PATTERN.matcher(email);
return matcher.matches();
}
}
正则表达式matcher.group()用法
本帖转自www.cnblogs.com/jsStudyjj/p…
group是针对()来说的,group(0)就是指的整个串,group(1) 指的是第一个括号里的东西,group(2)指的第二个括号里的东西。
package cn.mingyuan.regexp.singlecharacter;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class GroupIndexAndStartEndIndexTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "Hello,World! in Java.";
Pattern pattern = Pattern.compile("W(or)(ld!)");
Matcher matcher = pattern.matcher(str);
while(matcher.find()){
System.out.println("Group 0:"+matcher.group(0));//得到第0组——整个匹配
System.out.println("Group 1:"+matcher.group(1));//得到第一组匹配——与(or)匹配的
System.out.println("Group 2:"+matcher.group(2));//得到第二组匹配——与(ld!)匹配的,组也就是子表达式
System.out.println("Start 0:"+matcher.start(0)+" End 0:"+matcher.end(0));//总匹配的索引
System.out.println("Start 1:"+matcher.start(1)+" End 1:"+matcher.end(1));//第一组匹配的索引
System.out.println("Start 2:"+matcher.start(2)+" End 2:"+matcher.end(2));//第二组匹配的索引
System.out.println(str.substring(matcher.start(0),matcher.end(1)));//从总匹配开始索引到第1组匹配的结束索引之间子串——Wor
}
}
}
运行结果:
Group 0:World!
Group 1:or
Group 2:ld!
Start 0:6 End 0:12
Start 1:7 End 1:9
Start 2:9 End 2:12
Wor
JAVA正则表达式,matcher.find()和 matcher.matches()的区别
find()方法是部分匹配,是查找输入串中与模式匹配的子串,如果该匹配的串有组还可以使用group()函数。
matches()是全部匹配,是将整个输入串与模式匹配,如果要验证一个输入的数据是否为数字类型或其他类型,一般要用matches()。
关于正则表达式中的.,.?,.+?的理解
参考文章: blog.csdn.net/sinat_32336…
.+ 与 .* .+代表最少一个字符 .* 代表任意数量的字符
@Test
public void test1() {
String str = "ababccaab";
Pattern pattern = Pattern.compile("a.*?b");
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
System.out.println(matcher.group(0));
}
}
res
ab
ab
aab
@Test
public void test1() {
String str = "ababccaab";
Pattern pattern = Pattern.compile("a.+?b");
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
System.out.println(matcher.group(0));
}
}
res
abab
aab