正则表达式学习笔记2
一.修饰符
前面我们学习的都是用于匹配的基本的关键的一些表达式符号,现在我们来学习修饰符。修饰符不写在正则表达式里,修饰符位于表达式之外,比如/runoob/g,这个最后的g就是一种修饰符。下面我们看一些常见的修饰符。
i 就是不区分大小写,搜索时不区分大小写。AbC也能被/abc/i匹配
g 查找所有的匹配项,全部符合要求的字符串。abc234abc,正则为/abc/g,结果为abc,abc
m 多行匹配,前面提到^和$符号,匹配字符串整个的开头结尾,加上m修饰符之后就是匹配字符串每一行的开头和结尾。
s .号默认匹配除了换行符之外的所有符号加上s后.号也能匹配换行符如\n和\r。
二.优先级
1.转义符\
2.圆括号和方括号(),[]
3. 限定符*, +, ?, {n}, {n,}, {n,m}
4. ^, $, \加上前面提到的可以结合的字符
5.替换选择 |符号
三。常用正则表达式(此处引用https://www.runoob.com/regexp/regexp-example.html)
正则表达式 | 描述 |
---|---|
hello |
匹配 {hello} |
gray|grey |
匹配 {gray, grey} |
gr(a|e)y |
匹配 {gray, grey} |
gr[ae]y |
匹配 {gray, grey} |
b[aeiou]bble |
匹配 {babble, bebble, bibble, bobble, bubble} |
[b-chm-pP]at|ot |
匹配 {bat, cat, hat, mat, nat, oat, pat, Pat, ot} |
colou?r |
匹配 {color, colour} |
rege(x(es)?|xps?) |
匹配 {regex, regexes, regexp, regexps} |
go*gle |
匹配 {ggle, gogle, google, gooogle, goooogle, ...} |
go+gle |
匹配 {gogle, google, gooogle, goooogle, ...} |
g(oog)+le |
匹配 {google, googoogle, googoogoogle, googoogoogoogle, ...} |
z{3} |
匹配 {zzz} |
z{3,6} |
匹配 {zzz, zzzz, zzzzz, zzzzzz} |
z{3,} |
匹配 {zzz, zzzz, zzzzz, ...} |
[Bb]rainf\*\*k |
匹配 {Brainf**k, brainf**k} |
\d |
匹配 {0,1,2,3,4,5,6,7,8,9} |
1\d{10} |
匹配 11 个数字,以 1 开头 |
[2-9]|[12]\d|3[0-6] |
匹配 2 到 36 范围内的整数 |
Hello\nworld |
匹配 Hello 后跟换行符,后跟 world |
\d+(\.\d\d)? |
包含一个正整数或包含两位小数位的浮点数。 |
[^*@#] |
排除 *、@ 、# 三个特色符号 |
//[^\r\n]*[\r\n] |
匹配 // 开头的注释 |
^dog |
匹配以 "dog" 开始 |
dog$ |
匹配以 "dog" 结尾 |
^dog$ |
is exactly "dog" |
正则表达式 | 描述 |
---|---|
/\b([a-z]+) \1\b/gi |
一个单词连续出现的位置。 |
/(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/ |
匹配一个 URL 解析为协议、域、端口及相对路径。 |
/^(?:Chapter|Section) [1-9][0-9]{0,1}$/ |
定位章节的位置。 |
/[-a-z]/ |
a 至 z 共 26个 字母再加一个 - 号。 |
/ter\b/ |
可匹配 chapter,而不能匹配 terminal。 |
/\Bapt/ |
可匹配 chapter,而不能匹配 aptitude。 |
/Windows(?=95 |98 |NT )/ |
可匹配 Windows95 或 Windows98 或 WindowsNT,当找到一个匹配后,从 Windows 后面开始进行下一次的检索匹配。 |
/^\s*$/ |
匹配空行。 |
/\d{2}-\d{5}/ |
验证由两位数字、一个连字符再加 5 位数字组成的 ID 号。 |
<[a-zA-Z]+.*?>([\s\S]*?)</[a-zA-Z]*?> |
匹配 HTML 标记。 |