正则表达式初学
正则表达式初学
正则表达式在线测试工具:https://regex101.com/
常用限定符
?
前面的字符出现0次或1次
*
前面的字符出现包括0次的任意次
+
前面的字符出现一次以上
{ }
精确匹配
例:
{6}:前面的字符出现6次
{3,6}: 前面的字符出现3到6次
{3,}: 前面的字符出现3次以上
原子组
我的理解是配合限定符修饰使用。
原子即不可分割,限定符的限定作用对对应的一个原子组生效。
如
(ab){3,6}
这里原子组为(a,b),限定符为{3,6} 匹配连续出现一次及以上的“ab”
如:ab、ababab、ababab…….
常见原子组:
一、用括号括起来的部分
- (ab)
- (cat|dog) 表示匹配cat或者dog 注:a(cat|dog){3}这里的限定符{3}只对(cat|dog)作限制。
- …诸如此类
二、用方括号括起来的部分
方括号括起来的部分表示字符的范围
[abc] :要求匹配的字符只能取自于a、b、c其中任意一个
[a-z]:表示匹配小写字母(从a到z)
[a-zA-Z1-9]:表示匹配大小写字母和数字
在方括号内字符前加上尖括号表示不匹配的字符
[^1-9]:表示所有非数字字符(包括换行符)
元字符
预先定义好的一系列常用字符类型
常用元字符
\d:数字字符
\D:非数字字符
\w:单词字符(所有的英文字符数字上下划线)
\W:非单词字符
\s:空白字符(包含tab字符(制表符)以及所有的换行符)
\S:非空白字符
. :代表任意字符(不包括换行符)
^:匹配行首
$:匹配行尾
\b:代表单词字符的边界
贪婪/懒惰匹配
“?” 能将正则表达式的贪婪匹配转换成懒惰匹配
正则表达式默认会尽可能匹配更多的字符——贪婪匹配
如当我们想匹配某个html标签
<.+>
默认会把以下整个字符串全部匹配
1 | <body><div>xxxxxxxxxx</div>></body> |
而加上一个 “?”
<.+?>
则只会匹配其中的标签——懒惰匹配
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Enderman_1's blog!