java正则表达式语法
这里简单总结一下我对java里的正则表达式一部分语法的学习
一、
普通字符
字母、数字、汉字、下划线,以及其他没有特殊含义的字符都可作为正则表达式匹配他们本身。例如正则表达式“d”就匹配字符串中所有的字符“d”
简单的转义字符
\n :匹配字符串中的换行符
\t :匹配制表符
\^、\$、\)等:匹配^、$、)这些字符本身。因为这些字符在正则表达式里有特殊含义,不能直接用于匹配自身。
二、标准字符集合
可与"多种字符"(同类的)匹配
\d:匹配任意一个数字,即0-9中的任意一个。注意这里如果不加修饰只会匹配一位数字,即一个字符,后面的几个也类似。
\w:任意一个字母和或数字或下划线
\s:任意一个空白字符(回车、制表符、空格等)
. : 匹配除换行符之外的任意字符。
三、自定义字符集合
[ ]:匹配方括号中的任意一个字符。例如:[abc]匹配"a"或“b”或“c”。注意,如果方括号后不加修饰,待匹配的字符串里只要出现里面的其中一个字符就算匹配成功。
^:表示取反。[^abc]匹配除"a"、“b”、“c”之外的所有字符。
-:表示范围,[a-z]即表示匹配26个字母之一。
四、量词
用于修饰匹配次数的特殊符号
{n} : 表示表达式要重复n次。例如"\d{2}“就是匹配两个连续的数字,“dw12sd”中"12"会被匹配。
{n,m}:表示表达式至少重复n次,最多重复m次
例如用”\d{3,5}“去匹配“sad2313s434fre123456”会匹配到“2313”与“434”,但不会匹配到"123456”(重复了6次)
{m,}表达式至少重复m次,上不封顶。
?:相当于{0,1}
+:相当于{1,}
*:相当于{0,}
注意,这些符号与表达式之间、符号的各个部分之间是没有空格的。
这里还有一件事,如果想用正则表达式匹配字符串的某个部分然后取出,例如用"\d{3,5}"匹配并提取字符串“12351”中的某部分,这里会将“12351”全部提取出来,而不是其他结果。因为在默认情况下匹配是“贪婪模式”,即将匹配的字符越多越好。如果不想这样,在修饰次数的后面加“?”即可,这样会匹配尽可能少的字符数。
五、字符边界
下面的这几个符号只匹配位置,不配字符。
^:修饰一个正则表达式,表示在字符串开始处匹配。例如"^\d"即表示匹配字符串开头的一个数字。
$:表示从字符串结尾的地方匹配。
\b:匹配单词的边界,这个位置两边不都是"\w"集合中的字符。例如“abc_d e3df g”中的‘a’、‘d’、‘e’、‘f’、‘g’都是这个位置
六、选择与分组
“|”分支结构,即表示“或”。例如"\d | \t"即表示匹配一个数字或一个制表符。
():普通捕获组。从正则表达式左侧开始,每出现一个"(“就记一个分组,分组编号从1开始,0代表整个表达式。例如对于一个时间字符串“2019-06-24”,正则表达式”(\d{4})-((\d{2})-(\d{2}))"有4个括号,所以有四个分组:
编号 | 捕获组 | 匹配 |
---|---|---|
0 | (\d{4})-((\d{2})-(\d{2})) | 2019-06-24 |
1 | (\d{4}) | 2019 |
2 | ((\d{2})-(\d{2})) | 06-24 |
3 | (\d{2}) | 06 |
4 | (\d{2}) | 24 |
参考资料:尚学堂 2018 java300集教学视频
https://blog.csdn.net/just4you/article/details/70767928