正则表达式
直接匹配
根据 123 匹配 123
正则匹配
^[123]$
^ : 匹配开头,表示整段文本的开头
$ : 匹配结尾,表示整段文本的结尾
[ ] : 匹配中括号中任意一个字符,可以是1,也可以是2,也可以是3
^[^a-zA-Z]$
[a-z] : 中括号中匹配小写 a - z 字母
[A-Z] : 中括号中匹配大写 a - z 字母
[a-zA-Z] : 中括号中匹配小写 a - z 字母或大写 a - z 字母
[^a-z] : 中括号中的 ^ 表示取反的意思,只能匹配小写 a-z 之外的字符
^[^a-zA-Z]{3,10}$
{3} : 指定字符的个数,表示整段的字符只能为3个
{3,10} : 指定字符的个数,表示整段的字符只能为 3 - 10个
^.{3,}$
. : 点表示匹配任意字符,行终止符除外(空格)
{3,} : 指定字符的个数,不指定上限表示无穷个
\d
\d等价与 [0-9] , 匹配0 ~ 9之中的任意字符
\D
\d等价与 [^0-9], 匹配非0 ~ 9之外的任意字符
[\d\D]
[\d\D] : 可以匹配任意字符,包含回车符
\w
\w 等价于 [a-zA-Z0-9_]。匹配小写字母 a-z 大写字母 A-Z 数字0-9 后面再加一个 下划线
\W
\W 等价于 [^a-zA-Z0-9_]。非小写字母 a-z 大写字母 A-Z 数字0-9 后面再加一个 下划线
\s
\s 等价于 [\r\n\t\f\v ]。 匹配 换行 翻页 空格 等特殊字符
\S
\S 等价于 [^\r\n\t\f\v ]。 匹配 换行 翻页 空格 等之外的特殊字符
\w?
? 等价于 {0,1} 尽可能多地匹配前一个令牌 0 到 1次
\w*
* 等价于 {0,} 0次到无穷次
\w+
+ 等价于 {1,} 1次到无穷次
正则表达式组
^([a-zA-Z0-9])@163.com$
() 表示正则表达式组
^(?<first>[a-zA-Z0-9])@163.com$
?<first> 表示为组命名为first
在java程序中的体现
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author leizige
*/
public class RegexGroupExample {
public static void main(String[] args) {
String regex = "(\\d+)@163.com";
String str = "12343434@163.com";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
matcher.find();
System.out.println(matcher.group(0));
System.out.println(matcher.group(1));
}
}
If you’re going to reuse code, you need to understand that code!