正则表达式
描述字符串格式的一套体系,其他语言也可以使用。以下只是一些常用的,也是最基础的知识,希望能对想要快速入门的朋友们有一定的帮助。
一个字符
字符串的长度是可变的,有长有短。但是根本上还是由一个一个的字符所组成的,因此我们需要了解如何表示一个字符。例如:表示一个字符 a,使用一对中括号"[ ]",其中放入a 像这样 [a]
此时表示一个字符a。中括号"[ ]",表示的含义就是中括号中的其中一个字符。如下:
正则表达式 | 说明 |
---|---|
[abc] |
a、b、c中任意一个字符 |
[^abc] |
非a、b、c中任意一个字符 |
[a-z] |
a到z中的任意一个字符 |
[a-zA-Z0-9] |
a到z,A到Z,0到9中的任意一个字符 |
[a-z&&[^bc]] |
a~z除b,c一个字符 |
[a-z&&[^bc]]
可以一步步来看,表示a-z&&[^bc]中的任意一个字符,继续拆分a-z和[ ^bc ],不难看出&&表示“且”,也就是所说a到z并且没有b、c字符。
预定义字符集
就是一些特定字符组合在一起所表示的某一个特定的含义,如下:
正则表达式 | 说明 |
---|---|
. |
任意一个字符 |
\d |
任意一个数字字符,相当于[0-9] |
\w |
单词字符,相当于[a-zA-Z0-9_] |
\s |
空白字符,相当与[\t\n\xOB\f\r] |
\D |
非数字字符 |
\W |
非单词字符 |
\S |
非空白字符 |
量词
了解如何表示一个字符,表示多个就更简单了。只需要对出现的次数进行限定就行(X{n,}
这个中的n必须设置下限)
正则表达式 | 说明 |
---|---|
X? |
表示0个或1个X |
X* |
表示0个或任意多个X |
X+ |
表示1个或任意多个X |
X{n} |
表示n个X |
X{n,} |
表示n个或任意多个X |
X{n,m} |
表示n个到m个X |
分组
故名之意,所谓分组,就是用小括号“( )”,将多个字符分成一组,以组为单位进行匹配。也可以在后面使用量词进行数量的限制。
正则表达式 | 说明 |
---|---|
(abc|def) |
abc或者def为一组 |
边界符
用来表示和限定开始和结束的位置
正则表达式 | 说明 |
---|---|
^ | 开始边界 |
& | 结束边界 |
不加边界符部分匹配,Java默认添加边界符。
如果真的要完完整整的学习完正则表达式,这些是完全不够的,简直就是“九牛一毛”。但是只是了解的话,我认为这些就已经足够了。如果真的要用正则表达式解决问题,完全可以找现成的,因为那些已经是用了不能再用了,要比自己写的正确性高的多。基本上也都是常用的,像邮箱的验证、手机号的验证等。当然了,正则表达式还可以对数据进行分割,这个时候就需要我们自己去设计实现自己想要达到的效果了。
最后声明,以上内容是自己的学习、总结的,分享给大家。如果有不当的地方还请大佬指正交流!