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'
它匹配:
字符串中的第一个数字
第五副本"spaces then alphanumeric-periods-and-slashes"和
末尾的字母数字字符串
我不想反向引用上面的 #2 并用它弄乱我的数组,但我也不想写出重复模式,因为我得到的是一个更简洁的正则表达式(看看).
有没有办法说 "don't backreference this piece" 或者我应该在将数组解析为我的程序更有用的东西时处理它?
是的,有。使用非捕获组构造:(?:
... )
.
你甚至应该默认使用这个,除非你需要反向引用或捕获。
我有这个正则表达式:
@disks = $sysconfig =~ /(\d+)\.\d+:(\s+[\w.\/]+){5}\s+\((\w+)\)/ig
如果只有一行匹配,我会得到类似
的结果1835 x @array
1836 35
1837 ' 520B/sect'
1838 'KXG813JF'
它匹配:
字符串中的第一个数字
第五副本"spaces then alphanumeric-periods-and-slashes"和
末尾的字母数字字符串
我不想反向引用上面的 #2 并用它弄乱我的数组,但我也不想写出重复模式,因为我得到的是一个更简洁的正则表达式(看看).
有没有办法说 "don't backreference this piece" 或者我应该在将数组解析为我的程序更有用的东西时处理它?
是的,有。使用非捕获组构造:(?:
... )
.
你甚至应该默认使用这个,除非你需要反向引用或捕获。