正则表达式

Dec 17, 2019


基本规则

符号 含义
^ 匹配输入字符串的开始位置
$ 匹配输入字符串的结束位置
() 标记一个子表达式 开始 和 结束 的位置
* 匹配前面的子表达式零次或者多次
+ 匹配前面的子表达式一次或者多次
? 匹配前面的子表达式零次或者一次
{n} n 是一个非负整数。匹配确定的 n 次
{n,} n 是一个非负整数。至少匹配n 次
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。
. 匹配除换行符 \n 之外的任何单字符

正则截取字符串中间的内容

参考这里

String str = "abcdefaaa";
String regexp = "bc(.*)fa";
Pattern pattern = Pattern.compile(regexp);
Matcher matcher = pattern.matcher(str);
// matcher.find()方法必须调用,如果不调用会报错
if (matcher.find()) {
	// 包含前后匹配字符
	System.out.println(matcher.group());	==> bcdefa
	// 不包含前后匹配字符
	System.out.println(matcher.group(1));	==> de
}

匹配数字和字符串

String str = "ab12";
str.matches("^[a-z0-9A-Z]*$");	==> true
str.matches("^[a-z0-9A-Z]+$");	==> true
str.matches("^[a-z0-9A-Z]?$");	==> false

String str = "";
str.matches("^[a-z0-9A-Z]*$");	==> true
str.matches("^[a-z0-9A-Z]+$");	==> false
str.matches("^[a-z0-9A-Z]?$");	==> true

英文字母开头,只能包含英文字母、数字、下划线

参考这里

String str = "sa_sb";
str.matches("^[a-zA-Z][a-z0-9A-Z_]*$");	==> true