java中的正则表达式

在后端的开发过程中,正则表达式的使用是我们离不开一项例如在教研电话号,url,邮箱等情况下,下面我们一起了解下在java中使用正则表达式。

一、概述

在Java中,正则表达式是通过java.util.regex包中的类来处理的。主要的类包括PatternMatcherPattern类用于创建一个正则表达式对象,而Matcher类则用于匹配该正则表达式与输入的字符串。

二、语法

  • .:匹配除了换行符之外的任何字符。
  • \\d:匹配任何数字字符,等价于[0-9]
  • \\D:匹配任何非数字字符。
  • \\s:匹配任何空白字符,包括空格、制表符、换页符等。
  • \\S:匹配任何非空白字符。
  • \\w:匹配任何单词字符,等价于[a-zA-Z_0-9]
  • \\W:匹配任何非单词字符。
  • *:匹配前面的子表达式零次或多次。
  • +:匹配前面的子表达式一次或多次。
  • ?:匹配前面的子表达式零次或一次。
  • {n}:n 是一个非负整数。匹配确定的 n 次。
  • {n,}:n 是一个非负整数。至少匹配 n 次。
  • {n,m}:m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。
  • ^:匹配输入字符串的开始位置。
  • $:匹配输入字符串的结束位置。
  • [...]:字符集合。匹配所包含的任意一个字符。
  • [^...]:负值字符集合。匹配未包含的任意字符。

三、常见示例

1、匹配IP地址

Pattern pattern = Pattern.compile("^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$");  
String ipAddress = "192.168.1.1";  
Matcher matcher = pattern.matcher(ipAddress);  
if (matcher.matches()) {  
    System.out.println(ipAddress + " is a valid IP address.");  
} else {  
    System.out.println(ipAddress + " is not a valid IP address.");  
}

2、匹配url

Pattern pattern = Pattern.compile("^(https?:\\/\\/)?([\\da-z\\.-]+)\\.([a-z\\.]{2,6})([\\/\\w .-]*)*\\/?$");  
String url = "http://www.example.com/path/to/page";  
Matcher matcher = pattern.matcher(url);  
if (matcher.matches()) {  
    System.out.println(url + " is a valid URL.");  
} else {  
    System.out.println(url + " is not a valid URL.");  
}

// 这只是简单的一个例子,由于URL语法较为复杂,上例并不能匹配所有的情况

3、匹配日期(如YYYY-MM-DD)

Pattern pattern = Pattern.compile("\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])");  
String date = "2023-03-15";  
Matcher matcher = pattern.matcher(date);  
if (matcher.matches()) {  
    System.out.println(date + " is a valid date.");  
} else {  
    System.out.println(date + " is not a valid date.");  
}

4、匹配电子邮件地址

Pattern pattern = Pattern.compile("^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$");  
String email = "example@example.com";  
Matcher matcher = pattern.matcher(email);  
if (matcher.matches()) {  
    System.out.println(email + " is a valid email address.");  
} else {  
    System.out.println(email + " is not a valid email address.");  
}

5、查找和替换字符串中的数字

Pattern pattern = Pattern.compile("\\d+");  
String text = "There are 123, apples and 456, oranges.";  
Matcher matcher = pattern.matcher(text);  
StringBuffer sb = new StringBuffer();  
while (matcher.find()) {  
    matcher.appendReplacement(sb, matcher.group().replaceAll(",", "")); // 假设你想移除数字中的逗号  
}  
matcher.appendTail(sb);  
System.out.println(sb.toString()); // 输出: There are 123 apples and 456 oranges.    
// 但你可以根据需要使用matcher.appendReplacement()方法来进行替换。

  • 16
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风&竹林

各位老板的鼓励是我最大的创作动

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值