正则表达式在线测试地址http://tool.chinaz.com/regex/
目录
1.元字符
2.转义符
3.字符组
4.反义
5.分支
6.贪婪
7.分组
8.断言
9.JAVA中应用
1.元字符
示例: 子曰:学而时习之,不亦说乎?有朋自远方来,不亦乐乎?人不知而不悦,不亦君子乎?
当我们想要在这一句话中匹配"子曰:"之后的所有内容呢?
正则: 子曰:.*
匹配结果: 黄色就是被匹配中的内容,下面不做匹配演示,只说明各基础符号规则用法,自己在正则测试网页上测试一下就都能看懂使用了.
说明: 这里的英文句号”.”就是一个元字符,它将匹配除换行符以外的任意字符。
而这里的符号”*”也是元字符,但是它并不代表具体的字符,而是表示””前边的内容可以连续重复使用任意次以使整个表达式得到匹配,这种也叫做限定符。
2.转义符
3.字符组
4.反义
5.分支
匹配结果:(上面看不懂的就到匹配器上匹配一下)
6.贪婪
7.分组
8.断言
理解:
(?=...) # 匹配字符串,且紧挨着匹配的字符串之后的字符等于...,才算匹配成功,且不消耗字符串内容
(?!...) # 匹配字符串,且紧挨着匹配的字符串之后的字符不等于...,才算匹配成功,且不消耗字符串内容
(?<=...) # 匹配字符串,且紧挨着匹配的字符串之前的字符等于...,才算匹配成功,且不消耗字符串内容
(?<!...) # 匹配字符串,且紧挨着匹配的字符串之前的字符不等于...,才算匹配成功,且不消耗字符串内容
=================================================================================
(?!abc)是把abc当做一个整体进行匹配,字符串中不存在abc才能成功,abc作为一个整体进行匹配
[^abc]只要字符串中存在a/b/c中的任一个即匹配不成功,字符串中不能出现a/b/c中的任一个
生成中nginx问题实战:当location要求匹配不以png结尾的请求时
(.*)(?<!png)$
9.JAVA代码应用
好了,前面说了那么多,都是基础知识,上面的掌握了,就可以通过逻辑写出自己需要的绝大多数正则.下面来说说JAVA中的应用.
JDK中封装有处理正则的类Pattern!
//将给定的正则表达式编译为模式,参数为正则表达式
Pattern p = Pattern.compile(String regex);
//创建一个匹配器,匹配给定的输入与此模式.参数是需要匹配的字符串
Matcher m = p.matcher(String txt);
//判断是否匹配到
boolean b=m.find();
//取出匹配到的内容---可填写参数,具体看JDK文档.
String group = m.group();
//注意:一般取出内容前记得要先判断能否匹配到,另外分析个方法,很好用,也许有的人还不知道哈.这是String内置的方法,很方便可以做一些数据效验.
String txt="这是要匹配的字符串内容";
//返回值为true或者false,表示是否匹配到.
boolean b= txt.matches("这里输入的是正则");
10.idea中应用
有时候会用idea批量替换,这时候正则匹配比较灵活方便。而idea支持动态字符串替换处理。使用时注意是需要匹配的正则必须用()包裹,$1表示第一个()包裹正则匹配的内容,示例如图,这样就可以在ccc前面批量加上bbb:
好了,暂时就这么多,后续如果我学习接触到新的正则技术,我会更新补充的,希望对你有些帮助,给我点个赞呗.