Java中的正则表达式

Java中的正则表达式

1.基础语法

​ 正则表达式由普通字符和元字符组成。普通字符可以是字母、数字或符号等常见字符,而元字符则具有特殊的含义。例如,“.” 表示任意一个字符,“\d” 表示任意一个数字。

2.元字符

​ 元字符是正则表达式中最重要的部分之一,它用来描述字符的类型和数量。以下是一些常见的元字符:

  • “.”:表示任意一个字符
  • “\d”:表示任意一个数字
  • “\D”:表示除数字以外的任意一个字符
  • “\w”:表示任意一个单词字符(即字母、数字、下划线等)
  • “\W”:表示除单词字符以外的任意一个字符
  • “\s”:表示任意一个空格、制表符、回车符等空白字符
  • “\S”:表示除空白字符以外的任意一个字符
  • “^”:表示字符串开头
  • “$”:表示字符串结尾
  • “[]”:表示匹配一个字符集合
  • “{}”:表示匹配一个指定数量的元素
  • “|”:表示或的关系

3.量词

​ 量词用来表示某个元素出现的次数。以下是几个常见的量词:

  • “*”:表示匹配0或多次
  • “+”:表示匹配1或多次
  • “?”:表示匹配0或1次
  • “{n}”:表示匹配n次
  • “{n,}”:表示匹配n次或更多次
  • “{n,m}”:表示匹配n到m次

4.分组和反向引用

​ 在正则表达式中,可以使用小括号“()”来进行分组,分组后可以使用“\1”、“\2”等形式来进行反向引用。例如,“(ab)\1” 可以匹配 “abab”。

5.正则表达式示例

以下是一些常见的正则表达式示例:

  • 匹配手机号码:
     ^1[3-9]\d{9}$
    
  • 匹配电子邮件地址:
     ^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)$
    

6.Pattern和Matcher

​ Pattern和Matcher是用来操作正则表达式的两个重要类。Pattern类表示正则表达式对象,而Matcher类则用来对一个字符串进行匹配操作。

  1. 编译正则表达式

在使用正则表达式前,需要将正则表达式编译成Pattern对象。这可以通过Pattern.compile(String regex)方法实现。例如,下面的代码将正则表达式编译成Pattern对象:

String regex = "\\d+";
Pattern pattern = Pattern.compile(regex);
  1. 匹配字符串

一旦有了Pattern对象,就可以使用它来创建Matcher对象,并使用Matcher对象进行字符串匹配。Matcher类提供了多个方法用来对字符串进行匹配,如matches()、find()、group()等。例如,下面的代码可以用来判断一个字符串是否符合整数格式:

String input = "123";
boolean isMatch = Pattern.matches("\\d+", input);
  1. 查找子串

除了直接匹配字符串外,Matcher类还可以利用正则表达式来查找字符串中符合规则的子串。通过find()和group()方法,可以分别查找下一个匹配的子串和获取匹配的字符串。例如,下面的代码可以查找一个字符串中所有的数字,并打印出来:

String input = "hello 123 world 456";
Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
    System.out.println(matcher.group());
}
  1. 替换字符串

除了查找子串外,Matcher类还可以使用正则表达式来替换字符串中符合规则的内容。通过replaceAll()和replaceFirst()方法,可以分别替换掉所有匹配的内容或者仅替换第一个匹配的内容。例如,下面的代码可以将一个字符串中的所有数字替换为“###”:

String input = "hello 123 world 456";
Pattern pattern = Pattern.compile("\\d+");
String output = pattern.matcher(input).replaceAll("###");

综上所述,Pattern和Matcher类是Java中操作正则表达式的重要工具,它们可以实现对字符串的匹配、搜索和替换等操作。需要注意的是,在使用正则表达式时,还需要注意正则表达式的语法和特性,以确保正确使用它们。

7.代码实例

		String regex = "^[a-zA-Z0-9]{6,20}$";
        System.out.println(" ");
        System.out.println("注意:账号和密码长度为6-20位数字或字母!");
        Scanner in = new Scanner(System.in);
        System.out.print("请输入新账号:");
        String zh = in.nextLine();
        while (!zh.matches(regex)) {
            System.out.println("注意:账号和密码长度为6-20位数字或字母!");
            System.out.print("请重新输入新账号:");
            zh = in.nextLine();
        }
        System.out.print("请输入新密码:");
        String mm = in.nextLine();
        while (!mm.matches(regex)) {
            System.out.println("注意:账号和密码长度为6-20位数字或字母!");
            System.out.print("请重新输入新密码:");
            mm = in.nextLine();
        }

这是一个可以判断并修正密码长度和内容的程序,限制账号和密码长度为6-20位数字或字母。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值