1. 元字符
| 字符 |
含义 |
^ |
字符串开头 |
$ |
字符串结尾 |
. |
除换行外的任意字符 |
* |
匹配 0 次或多次 |
+ |
匹配 1 次或多次 |
? |
匹配 0 或 1 次;或最短匹配 |
| |
或 |
( ) |
分组、捕获 |
[ ] |
字符集合 |
{ } |
重复修饰符 |
\ |
转义 |
要表示元字符本身,用 \ 转义,如 \. 只匹配 .。
2. 重复修饰
| 表达式 |
含义 |
a* |
0 或多个 a |
a+ |
1 或多个 a |
a? |
0 或 1 个 a(可选) |
a{m} |
恰好 m 个 a |
a{m,} |
至少 m 个 a |
a{m,n} |
至少 m 且至多 n 个 a |
repetition? |
最短匹配(默认贪婪匹配取最长) |
3. 常用特殊符号
\t tab
\n 换行
\r 回车(CR)
\xhh 十六进制字符
\b 单词边界;\B 非单词边界
\w 单词字符(字母数字或 _);\W 非单词字符
\s 空白字符;\S 非空白字符
\d 数字(等价 [0-9]);\D 非数字
4. 字符集合 [...] 内的特殊规则
[characters] 匹配其中任一字符
[x-y] 匹配 ASCII 码 x~y
[\-] 匹配连字符 -
[\n] 匹配换行
[^something] 匹配除 something 之外的任一字符
5. 匹配示例
| 表达式 |
匹配… |
abc |
字符串 abc(任意位置) |
^abc |
开头的 abc |
abc$ |
结尾的 abc |
a|b |
a 或 b |
ab{2,4}c |
a + 2~4 个 b + c |
ab*c |
a + 任意个 b + c |
a\.c |
字面的 a.c |
[abc]+ |
a/b/c 构成的非空串 |
\d\d |
两位十进制数字,同 \d{2} |
\w+ |
一个“单词” |
100\s*mk |
100 与 mk 之间任意数量空白 |
6. 在 Perl 语句中使用
s/foo/bar/; # 替换 $_ 中第一处 foo 为 bar
s/foo/bar/g; # 替换所有 foo 为 bar
s/foo/bar/gi; # 忽略大小写替换所有 foo
if (m/foo/) { } # 判断 $_ 是否包含 foo
参考
- http://jkorpela.fi/perl/regexp.html
- Perl 教程:https://www.tutorialspoint.com/perl/index.htm