海南省住房和城乡建设厅网站,idc主机托管,湖北做网站推广,重庆网红景点有哪些在正则表达式中#xff0c;从左到右第一个左括号确定为第一组#xff0c;继续往右看再有左括号它表示的组数就加一。我们可以在正则表达式中使用 \\组数 的方法表示第几组#xff0c;如\\1表示第一组的内容。
1.捕获分组 捕获分组就是把这一组的数据捕获出来#xff0c;后… 在正则表达式中从左到右第一个左括号确定为第一组继续往右看再有左括号它表示的组数就加一。我们可以在正则表达式中使用 \\组数 的方法表示第几组如\\1表示第一组的内容。
1.捕获分组 捕获分组就是把这一组的数据捕获出来后续还要继续使用本组的数据。
练习一
题目需求
需求1判断一个字符串的开始字符和结束字符是否一致只考虑一个字符 举例a123a b456b 17891 abc
需求2判断一个字符串的开始部分和结束部分是否一致可以有多个字符 举例abc123abc b456b 123567123 !abc!
需求3判断一个字符串的开始部分和结束部分是否一致开始部分内部每个字符也需一致 举例aaa123aaa bbb456bbb 111567111 abc
编写代码
public class Test13 {//捕获分组就是把这一组的数据捕获出来在用一次//需求1判断一个字符串的开始字符和结束字符是否一致只考虑一个字符//举例a123a b456b 17891 abc//需求2判断一个字符串的开始部分和结束部分是否一致可以有多个字符//举例abc123abc b456b 123567123 !abc!//需求3判断一个字符串的开始部分和结束部分是否一致开始部分内部每个字符也需一致//举例aaa123aaa bbb456bbb 111567111 abcpublic static void main(String[] args) {//需求1判断一个字符串的开始字符和结束字符是否一致只考虑一个字符System.out.println(--------需求1--------);String regex1 (.).\\1;System.out.println(a123a.matches(regex1));System.out.println(b456b.matches(regex1));System.out.println(17891.matches(regex1));System.out.println(abc.matches(regex1));System.out.println(12345.matches(regex1));//需求2判断一个字符串的开始部分和结束部分是否一致可以有多个字符System.out.println(--------需求2--------);String regex2 (.).\\1;System.out.println(abc123abc.matches(regex2));System.out.println(b456b.matches(regex2));System.out.println(123567123.matches(regex2));System.out.println(!abc!.matches(regex2));System.out.println(12345.matches(regex2));//需求3判断一个字符串的开始部分和结束部分是否一致开始部分内部每个字符也需一致System.out.println(--------需求3--------);String regex3 ((.)\\2*).\\1;System.out.println(aaa123aaa.matches(regex2));System.out.println(bbb456bbb.matches(regex2));System.out.println(111567111.matches(regex2));System.out.println(abc.matches(regex2));System.out.println(12345.matches(regex2));}
}
运行结果 练习二 这个练习我们会使用到在正则表达式外部使用某组的数据在正则表达式内部使用某组数据时我们通过 \\组数 获取在正则表达式外部使用某组数据我们要通过 $组数 来获取
题目需求
需求将字符串我要学学学编编编编程程程程程 替换为我要学编程
编写代码
public class Test14 {public static void main(String[] args) {String str 我要学学学编编编编程程程程程;//regex为重复汉字的正则表达式String result str.replaceAll((.)\\1, $1);System.out.println(result);}
}
运行结果 2.非捕获分组 分组之后不需要使用本组数据仅仅是把数据括起来。 特点不占用组号 常用方式(?:) (?) (?!) 第一种最多使用
练习一
题目需求 简单的验证身份证号要求18位组成第一位不为0其余都为数字最后一位可以是数字也可以是X和x。
编写代码
public class Test15 {public static void main(String[] args) {String regex [1-9]\\d{16}(?:\\d|X|x);System.out.println(130111111111111111.matches(regex));}
}
运行结果