例如,我试图不使用以下
查找文本行 !dkdkdkdkdk: dkdkdkdkdkdkdkadfkldllsls <------ do not find this line of code
!dksdjfslfjlk afldajfdklafjdla;fd <-------- find this line of code
我尝试了以下代码,但没有工作。
^!(?!:)*$
答案 0 :(得分:2)
如果您有多行输入,则需要逐行读取数据并检查每行是否以!
开头,并且不包含:
以及以下正则表达式:
/^![^:]*$/
或者如果你想分割条件:
if (/^!/ and not /:/)
字符类[^:]
将匹配:
以外的任何字符。
以下是工作样本:
#!/usr/bin/perl
use strict;
use warnings;
my @matches;
while (<DATA>) {
if (/^![^:]*$/) {
push @matches, $_;
print "$_\n";
}
}
__DATA__
!dkdkdkdkdk: dkdkdkdkdkdkdkadfkldllsls
!dksdjfslfjlk afldajfdklafjdla;fd
请参阅IDEONE demo
@matches
将包含通过测试的所有行。
答案 1 :(得分:2)
有什么问题吗?
if ( /^!/ and not /:/ ) { ... }