Java正则表达式

先说些常规字符代表的含义

. // 1字符,一定是一个,多一个少一个都不行
? // 0个或一个
* // 0个或多个
+ // 1个或多个


中括号用途:[]

某个区间内所有字符 如 [a-zA-Z0-9]
某几个的范围所有字符 [abcd]
取非的所有字符[^a]

在中括号中的字符不再有特殊的含义,匹配全部的 .和*  [.][*]

转义的使用

首先要明白的是如果正则表达式是在字符串里,那么使用转义的话,先是编程语言解转义,然后是正则引擎解转义,所以你需要小心,如:Stirng regString = "\\.";表示的是匹配原生点号,第一个反斜杠被编程语言解析到的时候,被认为是转义标记,有效串变为\.,\.被正则引擎解释 ,遇到反斜杠,认为和后面的点构成转义,得到原生意义的点。

非的使用

在和中括号搭配使用时,[^a]表示非a的任意字符,那[^abc]呢?事实上,他表示的是任意非a,非b,非c的字符,这里的非有承前省的语义,使用时注意。[^.\/]表达的含义呢?他是要匹配任意非点和非正斜杠的字符。

断言的使用

零宽度正先行断言,匹配exp表达式前面的内容,如regString="a(?=\\/)",目标串"a/",中a就被匹配上,注意断言表达式不参与匹配。

在Java中使用:

Pattern pattern = Pattern.compile("http://|https://");
		Matcher matcher = pattern.matcher("http://");
		if (matcher.find()){
			System.out.println(matcher.group());
		}

这里需要注意的是一定要先find(),如果直接调用group(),那么会有java.lang.IllegalStateException: No match found的异常抛出,因为find()中会有必要的匹配行为,不能缺少。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值