如何否定此正則表達式(不使用!~
)?Perl正則表達式否定
my $Line='pqr_abc_def_ghi_xyz';
if ($Line=~/(?:abc|def|ghi)/)
{
printf("abc|def|ghi is not present\n");
}
else
{
printf("abc|def|ghi is present\n");
}
注:ABC,DEF或GHI可之前或字符串
如何否定此正則表達式(不使用!~
)?Perl正則表達式否定
my $Line='pqr_abc_def_ghi_xyz';
if ($Line=~/(?:abc|def|ghi)/)
{
printf("abc|def|ghi is not present\n");
}
else
{
printf("abc|def|ghi is present\n");
}
注:ABC,DEF或GHI可之前或字符串
另一個選擇可能是使用unless
而不是if
:
unless ($Line=~/(?:abc|def|ghi)/){printf("abc|def|ghi is not present\n");}
else {printf("abc|def|ghi is present\n");}
的另一種方式,這可能會給你的各個組件子
# (?s)^(?:(?:(?!abc|def|ghi).)+|)$
(?s)
^
(?:
(?:
(?!
abc
| def
| ghi
)
.
)+
|
)
$
我很好奇的原因更多的控件你不想使用'!〜'。你會告訴我嗎? – Birei
因爲我將正則表達式作爲參數傳遞給子例程。 – Jean
這將是一個更簡單的解決方案,通過一個標誌的子表示負面或積極的。保持正則表達式/標誌對的列表。 – sln