我在阅读一个关于正则表达式组匹配的问题,发现有两种方式可以引用正则表达式中的捕获组:
- Match字符串方法,例如
string.match(/(^.*)(:)(.*)/i).captures
- 类似Perl风格的捕获组变量,如 $1、$2 等,可以通过
if match =~ /(^.*)(:)(.*)/i
获得 - 更新: 正如0xCAFEBABE所提到的,还有第三种选择——last_match方法
哪种更好呢?使用1)时,出于安全考虑,你必须使用if语句来保护不为空值,那么为什么不直接提取信息呢?而使用2)就显得更方便。
Match
类。你可能指的是MatchData
类。 - sawa