正则表达式参考手册
什么是正则表达式?正则表达式本质上只是一个字符串。 字符正则表达式由一系列字符组成。字符分为元字符和普通字符,普通字符只能匹配他们自己。元字符可以匹配一些特殊规则。 点“.”元字符点“.”表示可以匹配任意一个字符。 public static void main(String[] args) throws IOException {
Pattern pattern = Pattern.compile("c.t");
Matcher matcher = pattern.matcher("cat");
while(matcher.find()){
System.out.println(matcher.group());
}
}
输出: cat 反斜杠“”在正则表达式中使用反斜杠“”可以忽略元字符,使得元字符的功能与普通字符一样。反斜杠本身也是一 public static void main(String[] args) throws IOException {
Pattern pattern = Pattern.compile("c.t");
Matcher matcher = pattern.matcher("c.t");
while(matcher.find()){
System.out.println(matcher.group());
}
}
输出: c.t 字符集字符集是一组在方括号内的字符,表示可以匹配其中的任何一个字符。 public static void main(String[] args) throws IOException {
Pattern pattern = Pattern.compile("c[aeiou]t");
Matcher matcher = pattern.matcher("catcetcbt");
while(matcher.find()){
System.out.println(matcher.group());
}
}
输出: cat cet 字符集的范围在字符集中,可以通过短横线来表示匹配字母或数字的范围。 public static void main(String[] args) throws IOException {
Pattern pattern = Pattern.compile("[a-e]");
Pattern pattern2 = Pattern.compile("[0-9]");
Matcher matcher = pattern.matcher("aeiou");
Matcher matcher2 = pattern2.matcher("2018");
while(matcher.find()){
System.out.println(matcher.group());
}
while(matcher2.find()){
System.out.println(matcher2.group());
}
}
输出: a
e
2
0
1
8
字符集的反义^表示反义符,可以在字符集的起始位放一个反义符表示取相反的部分。 public static void main(String[] args) throws IOException {
Pattern pattern = Pattern.compile("[^a-zA-Z0-9]");
Matcher matcher = pattern.matcher("aeiou$%^");
while(matcher.find()){
System.out.println(matcher.group());
}
}
输出: $ % ^ 转义字符集d与[0-9]都是匹配任何一个数字。 public static void main(String[] args) throws IOException {
Pattern pattern = Pattern.compile("d");
Pattern pattern2 = Pattern.compile("w");
Pattern pattern3 = Pattern.compile("D");
Pattern pattern4 = Pattern.compile("W");
Matcher matcher = pattern.matcher("aeiou6");
Matcher matcher2 = pattern2.matcher("$#%");
Matcher matcher3 = pattern3.matcher("12345aeiou");
Matcher matcher4 = pattern4.matcher("12345aeiouAEIOU");
System.out.println(matcher.find());
System.out.println(matcher2.find());
System.out.println(matcher3.find());
System.out.println(matcher4.find());
}
输出: true
false
true
false
重复大括号{}表示重复。大括号用在字符或字符集之后。 public static void main(String[] args) throws IOException {
Pattern pattern = Pattern.compile("[abc]{3}");
Matcher matcher = pattern.matcher("aaaabcd");
while(matcher.find()){
System.out.println(matcher.group());
}
}
输出: aaa abc 指定重复次数范围重复次数是可以指定范围的。 public static void main(String[] args) throws IOException {
Pattern pattern = Pattern.compile("a{1,5}");
Matcher matcher = pattern.matcher("aaaaaaabbb");
while(matcher.find()){
System.out.println(matcher.group());
}
}
输出: aaaaa aa 关于重复的转义符?与{0,1}相同,表示重复0次或1次。注意如果问号?出现在重复量词后面,则代表非贪婪匹配。 public static void main(String[] args) throws IOException {
Pattern pattern = Pattern.compile("a.?i"),pattern2 = Pattern.compile("a.*i"),pattern3 = Pattern.compile("a.+i");
Matcher matcher = pattern.matcher("aeiouaeiou"),matcher2 = pattern2.matcher("aeiouaeiou"),matcher3 = pattern3.matcher("aeiouaeiou");
while(matcher.find()){
System.out.println(matcher.group());
}
while(matcher2.find()){
System.out.println(matcher2.group());
}
while(matcher3.find()){
System.out.println(matcher3.group());
}
}
输出: aei aei aeiouaei aeiouaei 选择匹配用|来分隔表示可以匹配不同的选择 public static void main(String[] args) throws IOException {
Pattern pattern = Pattern.compile("cat|dog");
Matcher matcher = pattern.matcher("cat and dog");
while(matcher.find()){
System.out.println(matcher.group());
}
}
输出: cat dog 分组括号()表示分组。 public static void main(String[] args) throws IOException {
Pattern pattern = Pattern.compile("(cat)(and)(dog)");
Matcher matcher = pattern.matcher("catanddog");
matcher.matches();
int groupCount = matcher.groupCount();
for(int i = 0; i <= groupCount; i++){
System.out.println(matcher.group(i));
}
}
输出: catanddog cat and dog 第0组表示匹配到的字符串。 匹配任意字符.*表示匹配任意字符。 public static void main(String[] args){
Pattern pattern = Pattern.compile(".*");
Matcher matcher = pattern.matcher("aeiou");
while(matcher.find()){
System.out.println(matcher.group());
}
}
输出: aeiou 非贪婪型匹配任意字符.*?表示非贪婪型匹配任意字符 public static void main(String[] args){
Pattern pattern = Pattern.compile(".*?");
Matcher matcher = pattern.matcher("aeiou");
while(matcher.find()){
System.out.println(matcher.group());
}
}
输出: 0
0
0
0
0
0
此处匹配六个空字符。 未完待续… (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |