所有的正则可以使用的标记都在java.util.regex.Pattern类中。我们打开这个类文档可以看到有好多的标记,难道都要记?当然不是,我们只需记住一些比较常用的就行了。下面我们一起来看一下:
1.单个字符(数量:1)
字符(x):表示由一位字符所组成。如:
public class Text {
public static void main(String[] args) {
String str="t";
System.out.println(str.matches("t"));
String str1="tt";
System.out.println(str1.matches("t"));
String str2="t";
System.out.println(str2.matches("x"));
}
}
结果如下;
true
false
false
\\:表示转义字符“\”。
\t:表示一个“\t”符号。
\n:匹配换行符号“\n”。
2.字符集(数量:1)
[abc]:表示可能是字符a或则字符b或则字符c中任意一位。如:
public class Text{
public static void main(String[] args) {
String str="a";
System.out.println(str.matches("[abc]"));
String str1="x";
System.out.println(str1.matches("[abc]"));
}
}
结果如下:
true
false
[^abc]:表示不是字符a,b,c中任意一位。如:
public class Text{
public static void main(String[] args) {
String str="a";
System.out.println(str.matches("[^abc]"));
String str1="x";
System.out.println(str1.matches("[^abc]"));
String str2="ab";
System.out.println(str2.matches("[^abc]"));
}
}
结果如下:
false
true
false
[a-z]:表示所有的小写字母。
[a-zA-Z]:表示任意的一位字母,不区分大小写。如:
public class Text{
public static void main(String[] args) {
String str="a";
System.out.println(str.matches("[a-z]"));
String str1="x";
System.out.println(str1.matches("[a-zA-Z]"));
String str2="c";
System.out.println(str2.matches("[a-z]"));
String str3="D";
System.out.println(str3.matches("[a-zA-Z]"));
String str4="ab";
System.out.println(str4.matches("[a-zA-Z]"));
}
}
结果如下:
true
true
true
true
false
[0-9]:表示任意的一位数字。如:
public class Text {
public static void main(String[] args) {
String str="5";
System.out.println(str.matches("[0-9]"));
String str1="11";
System.out.println(str1.matches("[0-9]"));
}
}
结果如下;
true
false
3.简化的字符集(数量:1)
.:表示任意的一位字符。如:
public class Text {
public static void main(String[] args) {
String str="5";
System.out.println(str.matches("."));
String str1="11";
System.out.println(str1.matches("."));
String str2="c";
System.out.println(str2.matches("."));
String str3="[";
System.out.println(str3.matches("."));
}
}
如果如下:
true
false
true
true
\d:等价于:[0-9]。
\D:等价于:[^0-9]。如:
public class Text {
public static void main(String[] args) {
String str="5";
System.out.println(str.matches("\\d"));
String str1="11";
System.out.println(str1.matches("\\d"));
}
}
结果如下:
true
false
\s:表示任意的空白字符,如:"\t","\n"。
\S:表示任意的非空白字符。
\w:等价于“[a-zA-Z_0-9]”,表示由任意的字母,数字,_所组成。
\W:等价于“[^a-zA-Z_0-9]”,表示不是由任意的字母,数字,_所组成。如:
public class Text {
public static void main(String[] args) {
String str="5";
System.out.println(str.matches("[a-zA-Z_0-9]"));
String str1="11";
System.out.println(str1.matches("[a-zA-Z_0-9]"));
String str2="c";
System.out.println(str2.matches("[a-zA-Z_0-9]"));
String str3="D";
System.out.println(str3.matches("[a-zA-Z_0-9]"));
String str4="_";
System.out.println(str4.matches("[a-zA-Z_0-9]"));
}
}
结果如下:
true
false
true
true
true
4.数量表达
正则?:表示此正则可以出现一次或0次。如:
public class Text {
public static void main(String[] args) {
String str="1";
System.out.println(str.matches("1?"));
String str1="";
System.out.println(str1.matches("1?"));
String str2="11";
System.out.println(str2.matches("1?"));
}
}
如果如下:
true
true
false
正则+:表示此正则可以出现一次或一次以上。如:
public class Text {
public static void main(String[] args) {
String str="1";
System.out.println(str.matches("1+"));
String str1="";
System.out.println(str1.matches("1+"));
String str2="11";
System.out.println(str2.matches("1+"));
String str3="1111111";
System.out.println(str3.matches("1+"));
}
}
结果如下:
true
false
true
true
正则*:表示此正则可以出现0次一次或多次。如:
public class Text {
public static void main(String[] args) {
String str="1";
System.out.println(str.matches("1*"));
String str1="";
System.out.println(str1.matches("1*"));
String str2="11";
System.out.println(str2.matches("1*"));
String str3="1111111";
System.out.println(str3.matches("1*"));
}
}
结果如下:
true
true
true
true
正则{n}:表示此正则刚好出现n次。如:
public class Text {
public static void main(String[] args) {
String str="1";
System.out.println(str.matches("1{2}"));
String str1="";
System.out.println(str1.matches("1{2}"));
String str2="11";
System.out.println(str2.matches("1{2}"));
}
}
结果如下:
false
false
true
正则{n.}:表示此正则出现n次以上(包含n次)。
正则{n.m}:表示此正则出现n-m次。
5.逻辑运算
正则1正则2:正则1判断完之后继续判断正则2。
正则1|正则2:正则1或则正则2有一组满足即可。
(正则):将多个正则作为一组,可以为这一组单独设置出现的次数。
如:
public class Text {
public static void main(String[] args) {
String str="12";
System.out.println(str.matches("12"));
String str1="1";
System.out.println(str1.matches("1|2"));
String str2="1249749612";
System.out.println(str2.matches("(12){2}"));
}
}
结果如下:
true
true
false