API(正则表达式_分组)
public class RegexDemo8 {
public static void main(String[] args) {
//分组:()
//每组是有组号的,从左到右,从1开始
//规则:从左往右,第几个左括号就是第几组
//例如:(\\d(\\d))(\\d)第一个括号里的括号就是第二组
//捕获分组
//1.判断一个字符串的开始结束字符是否一致,只考虑一个字符
String regex1="(.).+\\1";// \\N表示第N组的内容
System.out.println("abc".matches(regex1));//false
System.out.println("aba".matches(regex1));//true
System.out.println("abcdefa".matches(regex1));//true
System.out.println("abcasd".matches(regex1));//false
//2.判断一个字符串的开始结束字符是否一致,可以是多个字符;例如abcyyyyabc asdjlsla $%^$$$$%^
String regex2="(.+).+\\1";
System.out.println("abcssssabc".matches(regex2));
System.out.println("asdjlsla".matches(regex2));
System.out.println("$%^$$$$%^".matches(regex2));
System.out.println("$%^$$$$%^*".matches(regex2));
//2.判断一个字符串的开始结束字符是否一致,可以是多个字符,且必须是一样的;例如abca aahfskjfhsaa &&&fddsfjk&&&
String regex3="((.)\\2*).+\\1";
System.out.println("abca".matches(regex3));
System.out.println("aahfskjfhsaa".matches(regex3));
System.out.println("&&&fddsfjk&&&".matches(regex3));
System.out.println("abcab".matches(regex3));
//正则表达式内部用\\组号来表示
//正则表达式外部用$组号来表示
String str="我要学学编编编编编编程程程程程";
//变为我要学编程
String s1 = str.replaceAll("(.)\\1+", "$1");
System.out.println(s1);//我要学编程
//非捕获分组(仅仅只是分组不占用组号) 21043019760604644x
//?: ?= ?!都是非捕获分组
String regex="[1-9]\\d{16}(?:\\d|X|x)";
System.out.println("21043019760604644x".matches(regex));
//?: :组合元素,不捕获匹配文本,不分配组号。
//?= :正向预查,要求后面文本匹配指定模式。
//?! :负向预查,要求后面文本不匹配指定模式。
}
}
http://example.com/2025/05/16/API(%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F_%E5%88%86%E7%BB%84)/
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Hexo!