[aeiou] | 匹配"a"、"e"、"i"、"o"、"u"中的任何一个字符 |
[a-cA-C] | 匹配'a'、'b'、'c'、'A'、'B'、'C'中的任何一个字符 |
[^abc] | 匹配'a'、'b'、'c'之外的任何一个字符 |
[^a-c0-2] | 匹配'a'、'b'、'c'、'0'、'1'、'2'之外的任何一个字符 |
[a-z&&[^bc]] | 匹配除'b'、'c'、之外的所有小写英文字母 |
上述描述只能匹配一个字符。若要匹配多个字符,建议用量词,例如:
(abc){3} 匹配abcabcabc//即括号中的内容重复3次 |
那问题来了,[abc]{3} 能匹配什么样的单词呢?
我们用计算机来匹配一下,上代码:
import java.util.regex.Pattern;
import java.util.regex.Matcher;
class Recognizer{
static String[] getWords(String text)
{
System.out.print("给定的字符串是:"+text);
String[] words=text.split("[\\s]+");
System.out.print("\n分离出来的单词是:\n");
for(String x:words)
{
System.out.print(x+"、");
}
return words;
}
static void recognize(String text,String reg){
String[] words=getWords(text);
System.out.print("\n识别出来的单词是:\n");
for(int i=0;i<words.length;i++)
{
if(words[i].matches(reg)==true)
System.out.print(words[i]+"、");
}
}
}
class App{
public static void main(String[] args)
{
String text,reg;
text="aaa aab aac aba abb abc aca acb acc baa bab bac bba bbb bbc bca bcb bcc caa cab cac cba cbb cbc cca ccb ccc abcabcabc";
reg="[abc]{3}";
Recognizer.recognize(text,reg);
}
}
运行结果:
我把字母'a'、'b'、'c'组合成27个的三位的组合,计算机把27个组合都匹配了,说明该正则表达式匹配的是只要是'a'、'b'、'c'组合的三位组合都能匹配
补:也可以多尝试几种情况
import java.util.regex.Pattern;
import java.util.regex.Matcher;
class Recognizer{
static String[] getWords(String text)
{
System.out.print("给定的字符串是:"+text);
String[] words=text.split("[\\s]+");
System.out.print("\n分离出来的单词是:\n");
for(String x:words)
{
System.out.print(x+"、");
}
return words;
}
static void recognize(String text,String reg){
String[] words=getWords(text);
System.out.print("\n识别出来的单词是:\n");
for(int i=0;i<words.length;i++)
{
if(words[i].matches(reg)==true)
System.out.print(words[i]+"、");
}
}
}
class App{
public static void main(String[] args)
{
String text,reg;
text="abbb accc abbc accb acbb abcc abcbcbc";
reg="a[bc]{3}";
Recognizer.recognize(text,reg);
}
}
运行结果:
同样可以分析得到