正则表达式

正则表达式有6种元字符:限定符、选择匹配符、分组组合和反向引用符、特殊字符、字符匹配符、定位符
使用正则表达式的一般形式:

public class RegExptest{
	public void RegExp_(){
		//保存需要匹配的字符串
		String str = "String";
		//保存匹配模式
		String regstr = "//d";
		//创建正则表达式对象
		Pattern pattern = Pattern.compile(regstr);
		//创建匹配器
		Matcher matcher = pattern.matcher(str);
		while(matcher.find()){
			System.out.println(matcher.group(0));
		}
	}
}

限定符的说明:

符号含义示例说明
*指定字符0-N次(abc)*仅包含任意个abc
+指定字符1-N次m+(abc)*至少1个m
?指定字符0-1次m+abc?至多一个c
{n}匹配字符串中长度为n的子字符串[abcd]{3}可以匹配到abc、bcd
{n,}指定至少匹配n长度的子字符串[abcd]{3,}可以匹配到abcd任意长度不小于3的子字符串
{n,m}指定匹配n-m长度的子字符串[abcd]{3,4}可以匹配到abcd任意长度3-4的子字符串,默认采用贪婪模式,尽可能的匹配最长子字符串
当?紧随其他限定符之后,代表匹配是非贪婪模式

选择匹配符的说明:

|匹配符号前后的或规则ab|cd可以匹配ab或cd
分组组合和反向引用符的说明:

分组是指匹配模式中再进行分组,有五种模式:
1、(Pattern)非命名捕获,匹配模式中第一个括号编号为1,也就是Pattern.group(1)
2、(?Pattern)命名模式,name不能有任何标点符号,且不能数字开头,尖括号可以用单引号代替
3、(?:pattern)等价于(pattern1|pattern2|pattern3)
4、(?=pattern)非捕获匹配,如Window(?=95|95|NT|2000),匹配“Window2000”,匹配结果是Window
5、(?!pattern)跟上面相反
字符匹配符的说明:

[]可接收的列表[abcd]a、b、c、d中的任意一个字符
[^]不接收的列表[^abcd]除a、b、c、d之外的任意一个字符
-连字符A-Z任意单个大写字母
.除\n以外的任意一个字符a..ba和b中间包含任意两个字符
\\d单个数字字符\\d{3}(\\d)?包含3个或者4个数字字符
\\D单个非数字字符\\D(\\d)*以非数字字符开头,连串数字字符结尾
\\w单个数字、大小写字母\\d{3}\\w{4}3个数字字符加上4个数字、大小写字母字符组成的字符串
\\W非单个数字、大小写字母\\W+\\d{2}至少一个非单个数字、大小写字母外加2个数字字符
\\s任何空白字符(空格、制表符等)\\s匹配空白字符
\\S任何非空白字符(空格、制表符等)\\S匹配非空白字符
在正则表达式中,匹配模式默认是区分大小写

如果想不区分的话,可以在表达式对象添加一个参数
Pattern pattern = Pattern.compile(regstr,Pattern.CASE_INSENSITIVE);
还有另一种方式:(?i)abc代表匹配abc时不区分大小写
定位符的说明:

^指定起始字符^[0-9]以数字开头
$指定结束字符[0-9]$以数字结尾
\\b匹配字符串的边界han\\b有空格或者结尾
\\B匹配字符串的非边界han\\b没有空格或者非结尾
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值