Perl 正则表达式高级特性深度解析
1. 正则匹配标志与模式分析
在正则表达式匹配中,标志的使用至关重要。所有匹配都需要 /gc
标志,这些标志会被添加到 foreach
循环内的匹配操作符中,因为它们影响的是匹配操作符而非模式本身。而匹配 “单词” 的正则表达式还需要 /i
标志,但不能将其添加到匹配操作符中,因为可能存在其他分支不需要该标志。
2. 递归正则表达式
从 Perl v5.10 开始,正则表达式有了递归特性,能够处理诸如平衡括号、解析 HTML 和解码 JSON 等复杂任务。
2.1 子模式重复
Perl v5.10 引入了 (?PARNO)
来引用特定捕获组中的模式。以下是几个示例:
- 简单引号匹配 :
#!/usr/bin/perl
# quotes.pl
use v5.10;
$_ =<<'HERE';
Amelia said "I am a camel"
HERE
say "Matched [$+{said}]!" if m/
( ['"] )
(?<said>.*?)
( ['"] )
/x;
此代码重复了子模式 ( ['"] )
。
- 使用反向引用 :