Java基础:正则表达式

张开发
2026/4/13 3:24:15 15 分钟阅读

分享文章

Java基础:正则表达式
正则表达式概念正则表达式就是用来验证各种字符串的规则。它内部描述了一些规则我们可以验证用户输入的字符串是否匹配这个规则。正则表达式——字符类正则表达式说明[abc]代表 a 或者 b或者 c 字符中的一个。[^abc]代表除 a、b、c 以外的任何字符。[a-z]代表 a-z 的所有小写字符中的一个。[A-Z]代表 A-Z 的所有大写字符中的一个。[0-9]代表 0-9 之间的某一个数字字符。[a-zA-Z0-9]代表 a-z 或者 A-Z 或者 0-9 之间的任意一个字符。[a-dm-p]a 到 d 或 m 到 p 之间的任意一个字符。示例代码public class RegexDemo2 { public static void main(String[] args) { //public boolean matches(String regex):判断是否与正则表达式匹配匹配返回true // 只能是a b c System.out.println(-----------1-------------); System.out.println(a.matches([abc])); // true System.out.println(z.matches([abc])); // false // 不能出现a b c System.out.println(-----------2-------------); System.out.println(a.matches([^abc])); // false System.out.println(z.matches([^abc])); // true System.out.println(zz.matches([^abc])); //false System.out.println(zz.matches([^abc][^abc])); //true // a到zA到Z(包括头尾的范围) System.out.println(-----------3-------------); System.out.println(a.matches([a-zA-z])); // true System.out.println(z.matches([a-zA-z])); // true System.out.println(aa.matches([a-zA-z]));//false System.out.println(zz.matches([a-zA-Z])); //false System.out.println(zz.matches([a-zA-Z][a-zA-Z])); //true System.out.println(0.matches([a-zA-Z]));//false System.out.println(0.matches([a-zA-Z0-9]));//true // [a-d[m-p]] a到d或m到p System.out.println(-----------4-------------); System.out.println(a.matches([a-d[m-p]]));//true System.out.println(d.matches([a-d[m-p]])); //true System.out.println(m.matches([a-d[m-p]])); //true System.out.println(p.matches([a-d[m-p]])); //true System.out.println(e.matches([a-d[m-p]])); //false System.out.println(0.matches([a-d[m-p]])); //false // [a-z[def]] a-z和def的交集。为:def System.out.println(----------5------------); System.out.println(a.matches([a-z[def]])); //false System.out.println(d.matches([a-z[def]])); //true System.out.println(0.matches([a-z[def]])); //false // [a-z[^bc]] a-z和非bc的交集。(等同于[ad-z]) System.out.println(-----------6------------_); System.out.println(a.matches([a-z[^bc]]));//true System.out.println(b.matches([a-z[^bc]])); //false System.out.println(0.matches([a-z[^bc]])); //false // [a-z[^m-p]] a到z和除了m到p的交集。(等同于[a-1q-z]) System.out.println(-----------7-------------); System.out.println(a.matches([a-z[^m-p]])); //true System.out.println(m.matches([a-z[^m-p]])); //false System.out.println(0.matches([a-z[^m-p]])); //false } }正则表达式-逻辑运算符符号说明非且|或者\转义字符代码示例public class Demo { public static void main(String[] args) { String str had; //1.要求字符串是小写辅音字符开头后跟ad String regex [a-z[^aeiou]]ad; System.out.println(1. str.matches(regex)); //2.要求字符串是aeiou中的某个字符开头后跟ad regex [a|e|i|o|u]ad;//这种写法相当于regex [aeiou]ad; System.out.println(2. str.matches(regex)); } }public class RegexDemo3 { public static void main(String[] args) { // \ 转义字符 改变后面那个字符原本的含义 //练习:以字符串的形式打印一个双引号 //在Java中表示字符串的开头或者结尾 //此时\表示转义字符改变了后面那个双引号原本的含义 //把他变成了一个普普通通的双引号而已。 System.out.println(\); // \表示转义字符 //两个\的理解方式前面的\是一个转义字符改变了后面\原本的含义把他变成一个普普通通的\而已。 System.out.println(c:Users\\moon\\IdeaProjects\\basic-code\\myapi\\src\\com\\itheima\\a08regexdemo\\RegexDemo1.java); } }正则表达式-预定义字符代码含义等价字符类解释.任意字符[^\n\r](在多行模式下可能不同)匹配除换行符之外的任意单个字符。\d数字[0-9]匹配任意一个数字字符 (0 到 9)。\D非数字[^0-9]匹配任意一个不是数字的字符。\s空白字符[ \t\n\x0B\f\r]匹配任意一个空白字符包括空格、制表符、换行符、垂直制表符、换页符和回车符。\S非空白字符[^ \t\n\x0B\f\r]匹配任意一个不是空白的字符。\w单词字符[a-zA-Z0-9_]匹配任意一个字母、数字或下划线。\W非单词字符[^a-zA-Z0-9_]匹配任意一个不是字母、数字或下划线的字符。代码示例public class Demo { public static void main(String[] args) { //.表示任意一个字符 System.out.println(你.matches(..)); //false System.out.println(你.matches(.)); //true System.out.println(你a.matches(..));//true // \\d 表示任意的一个数字 // \\d只能是任意的一位数字 // 简单来记:两个\表示一个\ System.out.println(a.matches(\\d)); // false System.out.println(3.matches(\\d)); // true System.out.println(333.matches(\\d)); // false //\\w只能是一位单词字符[a-zA-Z_0-9] System.out.println(z.matches(\\w)); // true System.out.println(2.matches(\\w)); // true System.out.println(21.matches(\\w)); // false System.out.println(你.matches(\\w));//false // 非单词字符 System.out.println(你.matches(\\W)); // true System.out.println(-----------------------------------------); // 以上正则匹配只能校验单个字符。 // 必须是数字 字母 下划线 至少 6位 System.out.println(2442fsfsf.matches(\\w{6,}));//true System.out.println(244f.matches(\\w{6,}));//false // 必须是数字和字符 必须是4位 System.out.println(23dF.matches([a-zA-Z0-9]{4}));//true System.out.println(23 F.matches([a-zA-Z0-9]{4}));//false System.out.println(23dF.matches([\\w[^]]{4}));//true System.out.println(23_F.matches([\\w[^_]]{4}));//false } }正则表达式-数量词量词含义说明X?0 次或 1 次匹配前面的元素 X 0 次或 1 次。等价于{0,1}。X*0 次到多次匹配前面的元素 X 0 次、1 次、2 次…任意次数。等价于{0,}。X1 次或多次匹配前面的元素 X 1 次、2 次、3 次…任意多次。等价于{1,}。X{n}恰好 n 次匹配前面的元素 X 恰好 n 次。X{n,}至少 n 次匹配前面的元素 X 至少 n 次n 次、n1 次、n2 次…。X{n,m}n 到 m 次匹配前面的元素 X 从 n 次到 m 次之间的任意次数包含 n 和 m。代码示例public class Demo { public static void main(String[] args) { // 必须是数字 字母 下划线 至少 6位 System.out.println(2442fsfsf.matches(\\w{6,}));//true System.out.println(244f.matches(\\w{6,}));//false // 必须是数字和字符 必须是4位 System.out.println(23dF.matches([a-zA-Z0-9]{4}));//true System.out.println(23 F.matches([a-zA-Z0-9]{4}));//false System.out.println(23dF.matches([\\w[^]]{4}));//true System.out.println(23_F.matches([\\w[^_]]{4}));//false } }

更多文章