java正则表达式 基本使用

java正则表达式

一、基本使用

String content = "内容123abcd456789";
String regStr = "\\d";
//创建正则表达式
Pattern compile = Pattern.compile(regStr);
//获取匹配器
Matcher matcher = compile.matcher(content);
//查询内容
while (matcher.find()) {
  //取出内容
  System.out.println(matcher.group());
}

二、常用表达式

[]		表示可接收的字符列表	如:[abc]		意思是只匹配a、b、c中的任意1个字符
[^]		表示不接收的字符列表	如:[^abc]		意思是匹配除a、b、c之外的任意1个字符
-		连接字符				如:[a-z]		意思是匹配从a到z的中的任意1个字符
^		指定开始字符			如:^[a-z]		意思是字符串必须以任意一个小写字符开头
$		指定结束字符			如:[a-z]$		意思是字符串必须以任意一个小写字符结尾

\\d		表示匹配任意1个数字字符,相当于[0-9]
\\D		表示匹配任意1个非数字字符,相当于[^0-9]
\\w		表示匹配任意1个数字或大小写的字符,相当于[0-9a-zA-Z]
\\W		表示匹配任意1个非数字或大小写的字符,相当于[^0-9a-zA-Z]
\\num	表示匹配正整数
\\b		匹配目标字符串边界
\\B		匹配非目标字符串边界
\\f		表示换页符匹配
\\n		表示换行符匹配
\\r		表示回撤符匹配
\\t		表示制表符匹配
\\v		表示垂直制表符匹配
\\s		表示匹配任意1个空白字符(空格、制表格、换行符等),相当于[\\f\\n\\r\\t\\v]
\\S		表示匹配任意1个非空白字符(空格、制表格、换行符等),相当于[^\\f\\n\\r\\t\\v]

(?i)	表示不区分大小写	 如:(?i)abc 意思是匹配abc、ABC、aBc等,a(?i)bc 匹配abc、aBC等,a((?i)b)c 匹配abc、aBc

{n}		表示匹配n次数		 如:\\d{4}	意思是匹配任意连续的4个数字字符。比如:1234、5432、1999
{n,}	表示至少匹配n次	 如:\\d{4,}	意思是匹配任意连续的4个数字字符。比如:1234、12345、123456
{n,m}	表示至少匹配n次不能超过m次	 如:\\d{4,5 	意思是匹配任意连续的4个数字字符。比如:1234、12345
.		表示匹配除\n之外的任意1个字符	如:\\d.\\d  意思是匹配1个数字开头1个数字结尾,中间1个任意字符。比如:123、1a3、1b3
*		表示匹配0到多次		如:\\d{4}.*(\\d)	意思是匹配4个数字开头1个数字结尾,中间0到多个任意字符。比如:12345或1234a5
+		表示匹配1到多次		如:\\d{4}.+(\\d)	意思是匹配4个数字开头1个数字结尾,中间1到多个任意字符。比如:1234a5或1234ab5
|		表示选择匹配			如:\\d{4}(A|a)(\\d)	意思是匹配4个数字开头1个数字结尾,中间是A或a
?		表示匹配0到1次		如:\\d{4}(\\d)?	意思是匹配任意连续的4到5个数字字符。比如:1234、12345
		注意:({n}、{n,}、{n,m}、*、+、?)默认都是贪婪匹配,按照最长的匹配信息匹配。
			如果使用非贪婪匹配需要在限定符后面加上?,表达式就会按照最最短匹配信息匹配。

(pattern)			非命名捕获分组,通过下标获取:matcher.group(index);
(?<name>pattern)	命名捕获分组,通过下标或名称获取:matcher.group(name);
(?:pattern)			非捕获分组,取出匹配并保留匹配内容,不能通过下标获取
(?=pattern)			非捕获分组,取出匹配但不保留匹配内容,不能通过下标获取
(?!pattern)			非捕获分组,取出非匹配但不保留匹配内容,不能通过下标获取
\\数字		 	    反向引用,数字表示引用第几组数据
						案例:匹配两个连续相同的数字 (\\d)\\1
							匹配五个连续相同的数字 (\\d)\\1{4}
							匹配AABB格式数字	(\\d)(\\d)\\2\\1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值