正则表达式模式匹配全解析
1. 交替字符与分组
在正则表达式中,使用交替字符( | )时,锚定字符仅适用于管道符同一侧的模式。例如,模式 /^this|that/ 表示“行首的 this ”或“任意位置的 that ”,而非“行首的 this 或 that ”。若要实现后者,可使用 /^this|^that/ ,不过更好的方式是使用括号进行分组:
/^(this|that)/
此模式下,Perl 先匹配行首,接着尝试匹配 “this” 中的所有字符。若无法匹配 “this”,则回溯到行首并尝试匹配 “that”。对于模式 /^this|that/ ,Perl 会先尝试匹配管道符左侧的所有内容(行首接 “this”),若失败则回溯并在整个字符串中搜索 “that”。
更优的版本是仅对两个模式中不同的部分进行分组,不仅是匹配行首的 ^ ,还包括 th 字符,如下所示:
/^th(is|at)/
该模式意味着,只有当行首已匹配 th 时,Perl 才会尝试交替匹配,从而减少回溯以匹配模式。正则表达式中,Perl 匹配所需的工作量越少越好。
超级会员免费看
订阅专栏 解锁全文
1249

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



