今天java可刚学习了正则表达式,看着这一堆跟火星文一样的东西无从下手,老师让我们写个博客写写自己的理解(我看都看不懂怎么理解),然后就只能照着java课本和网上大佬的博客瞎写点东西了。
作用:用来描述匹配一个字符串集合的模式,可以很方便的匹配,替换,拆分字符串,在表单验证、Url映射等处都会经常用到。
正则表达式有字面值是字符和特殊符号组成,
| 代码 | 匹配 | 示例 |
|---|---|---|
| x | 指定符号x | java匹配java |
| . | 任意单个字符,除了换行符外 | java匹配j…a |
| (ab|cd) | ab或cd | ten匹配t(en|im) |
| [abc] | a,b或者c | java匹配ja[uvwx]a |
| [^abc] | 除了a,b或者c外的任意字符 | java匹配la[^ars]a |
| [a-z] | a到z | java匹配[a-m]av[a-d] |
| [^a-z] | 除了a到z外的任意字符 | java匹配jav[^b-d] |
| [a-e[m-p]] | a到e或m到p | java匹配[a-g[i-m]]av[a-d] |
| d | 一位数字,等同于[0-9] | java2匹配java[d] |
| D | 一位非数字 | $java匹配[D][D]ava |
| w | 单词字符 | Java1匹配[w]ava[d] |
| W | 非单词字符 | $java匹配[W][ w]ava |
| s | 空白字符 | java 2匹配javas 2 |
| S | 飞空白字符 | java匹配[S]ava |
| p* | 0或者多次出现模式p | aaaa匹配a*,abab匹配(ab)* |
| p+ | 1次或者多次出现模式p | a匹配a+b*,able匹配(ab)+.* |
| p? | 0或者1次出现模式p | java匹配j?java |
| p{n} | 正好出现n次模式p | java匹配ja{1}.*,java不匹配.{2} |
| p{n,} | 至少出现n次模式p | aaaa匹配a{1,},a不匹配a{2,} |
| p{n,m} | n到m(不包含)次出现模式p | aaaa匹配a{1,9},abb不匹配a{2,9}bb |
| p{P} | 一个标点字符!"#$%&’()*±,;:@^_=`?~ | j?a匹配jp{P}a |
注意:单词宇符是任何的字母,数宇或者下划线字符。因此w等同于 [a-z[A-Z][0-9]_]或者简化为 [a-Za-z0-9_]。W等同于[^a-Za-z0-9]。
注意:表H-1中后面六个条目*、+、?、{n}、{n, }以及{n,m}称为量词符 (quantifier),用于确定量词符前面的模式会重复多少次。例如,A*匹配0或者多个A,A+匹配1或者多个A,A?匹配0或者1个A。
A{3} 精确匹配 AAA,A{3, },匹配至少3个A, A{3,6}匹配3到6之间个A。*等同于 {0, },+等同于{1, },?芋同于{0,1}。
警告:不要在重复量词符中使用空白。例如,A{3,6}不能写成逗号后面有一个空白符的
A{3, 6}。
注意:可以使用括号来将模式进行分组。例如,(ab){3}匹配ababab,但是ab{3}匹配
abbb.



