正则表达
Posted xxjb
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达相关的知识,希望对你有一定的参考价值。
字符类
[abc] 匹配a、b、c任意一个字符
[^abc] 匹配除了a、b、c外的任意一个字符
[a-zA-Z] 匹配a-z或A-Z中的任意一个字符
[a-d[m-p]] 匹配a-d或m-p中的任意一个字符,取交集,等价于[a-dm-p]
[a-z&&[def]] 匹配d、e、f中任意一个字符
[a-z&&[^bc]] 匹配a-z中除了b、c外的任意一个字符,等价于[ad-z]
[a-z&&[^m-p]] 匹配a-z中除了m-p范围内的任意一个字符,等价于[a-lq-z]
预定义的字符类
. 匹配除了换行符以外的任意字符
d 匹配数字,等价于[0-9]
D 匹配任意非数字的字符
h 匹配水平空白字符(比如 )
H 匹配非水平空白字符[^h]
s 匹配任意空白符
S 匹配任意不是空白符的字符
v 匹配垂直空白字符(比如 )
V 匹配非垂直空白字符[^v]
w 匹配字母或数字或下划线,等价于[a-zA-Z_0-9]
W 匹配任意不是字母、数字、下划线、汉字的字符,等价于[^a-zA-Z_0-9]
边界匹配器
^ 匹配字符串的开始
$ 匹配字符串的结束
匹配单词的开始或结束
B 匹配不是以单词开头或结束的位置
G 前一个匹配的结束
[] 显示限制条件中的任意一个字符
显示次数
* 重复零次或更多次
? 重复零次或一次
+ 重复一次或更多次
{n} 重复N次
{n,} 重复N到多次
{n,m} 重复N到M次符
示例
◆ ^为限制开头
^java 条件限制为以Java为开头字符
◆ $为限制结尾
java$ 条件限制为以java为结尾字符
◆ . 条件限制除/n以外任意一个单独字符
java.. 条件限制为java后除换行外任意两个字符
◆ 在限制条件为特定字符出现0次以上时,可以使用「*」
J* 0个以上J
.* 0个以上任意字符
J.*D J与D之间0个以上任意字符
◆ 在限制条件为特定字符出现1次以上时,可以使用「+」
J+ 1个以上J
.+ 1个以上任意字符
J.+D J与D之间1个以上任意字符
◆ 在限制条件为特定字符出现有0或1次以上时,可以使用「?」
JA? J或者JA出现
◆ 限制为连续出现指定次数字符「{a}」
J{2} JJ
J{3} JJJ
◆ 文字a个以上,并且「{a,}」
J{3,} JJJ,JJJJ,JJJJJ,???(3次以上J并存)
◆ 文字个以上,b个以下「{a,b}」
J{3,5} JJJ或JJJJ或JJJJJ
◆ 两者取一「|」
J|A J或A
Java|Hello Java或Hello
◆ 「()」中规定一个组合类型
查询<a href=/"index.html/">index</a>中<a href></a>间的数据,可写作<a.*href=/".*/">(.+?)</a>
Demo
方法一:
1 String rex = "[a-z[d-m]]"; 2 Pattern p = Pattern.compile(rex); 3 Matcher matcher = p.matcher("f"); 4 boolean matches = matcher.matches();
方法二:
1 String rex = "[a-z[d-m]]"; 2 boolean matche = Pattern.matches(rex, "d");
PS:
Pattern API(Java Platform SE 8)网址:https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html
以上是关于正则表达的主要内容,如果未能解决你的问题,请参考以下文章
正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性