👉通过perl来介绍正则表达式。
快速入门
先写一个最简单的正则表达式,查到是否有匹配的字符串,如下:
$_ = "little verifier";
if(/little/){ # 查找 little 字符
print "find it!\n";
}else{
print "cannot find it!\n";
}
如上,我们可以用 / 斜杠符号作为开始匹配正则。用/ … /的方式,在其中写正则表达式。其实/ … / 的方式是 m 匹配的简写,你可以用m{ }、m( )、m< >、m/ /的方式都可以。比如要匹配 http://,你可以用/ http\/\//的方式去匹配,但是太难看了,也可以用m%http://%或者m{http://}等方式,这时候/就不需要用\去转义了。
1. 通配符及量词
.是一个通配符,通常会和量词*、+和 ?连用,总结如下:
| 符号 | 描述 | 例子 |
|---|---|---|
. | 匹配任意一个字符,但不包括 \n 换行。 | /litt.e/ # 可以匹配到 little |
.* | 匹配0个或多个任意字符 | /litt.*le/ # 可以匹配到 little/li.*e/ # 可以匹配到 little |
.+ | 匹配一个以上任意字符,但至少匹配一个字符 | /litt.+le/ # 匹配不到 little/li.+e/ #可以匹配到 little |
.? | 匹配一个或0个字符,即有或者没有都行 | /litt.?le/ # 匹配不到 little/litt.?e/ # 可以匹配到 little |
t*或t+或t? | t*匹配任意多个字符 t ;t+匹配至少一个字符t ;t?匹配0个或一个字符t ;类似的如 :n?(0个或一个字符n)、c*(任意多个字符 c)、d+(一个以上字符 d)。 | /lit+le/ # 可以匹配到 little/li.+e/ #可以匹配到 little |
(tb)*或(tb)+或(tb)? | (tb)*匹配任意多个字符 tb ;(tb)+匹配至少一个字符 tb ;(tb)?匹配0个或一个字符 tb ; |
2. 常用的简写
| 符号 | 描述 |
|---|---|
(.) | 模式分组 |
a|b | 择一选择,要么匹配a,要么匹配b ; |
[abc] | 字符集,匹配a、b、c 中的任一个字符 |
简写字符包括如下:
| 符号 | 描述 |
|---|---|
\d | 十进制数字 |
\D | 非十进制数字 |
\s | 空白字符 |
\S | 非空字符 |
[\d\D] | 匹配和一个字符,可以是\n换行符(区别于.的地方) |
3.锚位
| 符号 | 描述 | 例子 |
|---|---|---|
^ | 匹配开头 | |
$ | 匹配结尾 | |
\b | 匹配单独的单词 | /\bsub\b/ # 不能匹配subfunction |
4.模式匹配修饰符
写在正则表达式的后面,如linux命令行一样,多个参数可以同时加,如xi
| 符号 | 描述 | 例子 |
|---|---|---|
| x | 忽略正则表达式中的空格 | / \s abc \d /x |
| i | 忽略匹配时的大小写 | / \s aBc \d /xi |
| s | 匹配任意字符,包括换行符\n |
未完待续…

3168

被折叠的 条评论
为什么被折叠?



