《Perl 正则表达式入门》

《Perl 正则表达式入门》

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
阅读 — · 全站 —
🎸 我的歌单 0 首