为什么这不起作用?试图做一个负面的预测.我试图从垃圾箱中取出数字,除了隔离箱和检查箱.当我使用前面的^代码匹配括号中的所有数字.当我删除^它什么都不匹配.
你也可以使用"或运算符|" 在负面的向前看?我想要^(?!Quarantine_Bin | Inspection_Bin)
我也试图特别否定[^Quarantine_Bin]它仍然匹配.
^(?!Quarantine_Bin)\([0-9]+\)
Run Code Online (Sandbox Code Playgroud)
数据
Quarantine(2),Other_Bin(2),Quarantine_Bin(2),Quarantine_Bin(2),
Quarantine_Bin(5),Inspection_Bin(3),Regular_Bin(5),other(2)
Run Code Online (Sandbox Code Playgroud)
这是一个负面的背后隐藏
use warnings;
use feature 'say';
my @strings = (
"Quarantine_Bin(5),Inspection_Bin(3),Regular_Bin(5),other(2)",
"Quarantine(2),Other_Bin(2),Quarantine_Bin(2),Quarantine_Bin(2),"
);
for (@strings) {
my @m = $_ =~ /(?<!\b(?:Quarantine|Inspection)_Bin)\(\d+\)/g;
say "@m";
}
Run Code Online (Sandbox Code Playgroud)
该^锚你想要的这里没有做,使用\b指定一个字边界.
这包括带数字的括号,返回行(5) (2)和(2) (2).
如果您宁愿省略它们,请在数字周围添加捕捉画面
/(?<! \b(?: Quarantine|Inspection)_Bin ) \( (\d+) \)/xg;
Run Code Online (Sandbox Code Playgroud)
或拉开后视镜内的开口按钮(因此不会消耗)并省略关闭的一个
/(?<! \b(?: Quarantine|Inspection)_Bin \( ) \d+/xg;
Run Code Online (Sandbox Code Playgroud)
这些返回线5 2和2 2没有括号.
该/x修改允许里面的可读性空间.