perl 正则表达式可以使用 parens 但跳过对它们的反向引用吗?

Can a perl regex use parens but skip backreferencing on them?

我有这个正则表达式:

@disks = $sysconfig =~ /(\d+)\.\d+:(\s+[\w.\/]+){5}\s+\((\w+)\)/ig

如果只有一行匹配,我会得到类似

的结果
1835 x @array
1836  35
1837  ' 520B/sect'
1838  'KXG813JF'

它匹配:

  1. 字符串中的第一个数字

  2. 第五副本"spaces then alphanumeric-periods-and-slashes"和

  3. 末尾的字母数字字符串

我不想反向引用上面的 #2 并用它弄乱我的数组,但我也不想写出重复模式,因为我得到的是一个更简洁的正则表达式(看看).

有没有办法说 "don't backreference this piece" 或者我应该在将数组解析为我的程序更有用的东西时处理它?

是的,有。使用非捕获组构造:(?: ... ).

你甚至应该默认使用这个,除非你需要反向引用或捕获。