一、推荐个正则表达式练习网站:regex101: build, test, and debug regexhttps://regex101.com/
二、正则表达式常用的几个符号
(一)限定符
1.
?:
表示匹配的字符串中,?前面的字符可有可无,即?前面的字符出现0次或一次。
例子:
use a used variable name is illegal.
输入used?,可以匹配use也可以匹配used,d这个字符在匹配的字符串中可以出现0次或1次。
2.
*:
表示匹配的字符串中,*前面的字符可以没有也可以出现多次。
3.
+:
表示匹配的字符串中,+前面的字符出现一次以上
4.
{}:限定花括号前面的字符出现的次数
例子:
ab{6},匹配字符串abc,其中a和c之间的b出现6次。
例子:
ab{2,6}c:匹配abc的字符串,其中b的个数为2-6次
例子:
ab{2,}c: 表示匹配的abc字符串中,b的个数为2次及以上。
5.
例子:
(ab)+表示匹配ab字符串,其中ab字符串可以出现1次或多次。
(二)或运算符
1.
|:或运算符
例子:
a (cat|dog):匹配字符串 a cat,a dog.
2.
[]:
[]符号表示,匹配的字符只能取决于方括号里的内容
例子:
匹配由abc几个字母组成的单词,可以写成[abc]+
如下图:
[a-z]+:代表匹配所有的小写字符。
[a-zA-Z]+:表示匹配所有的大小写字符。
例子如下图所示:
[a-zA-Z0-9]+:表示匹配所有的大小写字符和数字。
例子如下图所示:
3.
^:脱字符
如果在方括号内容的前面我们写一个尖号(脱字符),则代表要求匹配除了尖号后面列出的【以外】的字符。
(三)元字符
另外正则表达式中其实为我们预先定义好了一系列常用的字符类型,比如数字、空白符、单词开头、结尾等等,它们被称为元字符。
\d:数字字符
\w:单词字符(英文、数字及下划线)
\s:空白符(包含Tab和换行符)
\D:非数字字符
\W:非单词字符
\S:非空白字符
\b:字符的边界
.:任意字符但不包含换行符
^:匹配行首,比如^a只会去匹配行首的a
$:匹配行尾,比如a$只会去匹配行尾的a
(四)贪婪与懒惰匹配
<.+>:正则表达式中默认是贪婪匹配。
<.+?>:加个?,会将贪婪匹配切换为懒惰匹配。
1.实例1:RGB颜色值匹配
2. 实例2:IPv4地址匹配
前两位是25第三位取0-5之间的数;或者,第一位是2,第二位取0-4中任意的数, 第三位取0-9中任意的数;或者,第一位取0或1中的数,第二位第三位取0-9中的数,因为一位数二位数三位数都有可能,所以在第一位和第三位都加了问号。
(五)总结