例如,我试图不查找具有以下内容的文本行
!dkdkdkdkdk: dkdkdkdkdkdkdkadfkldllsls <------ do not find this line of code
!dksdjfslfjlk afldajfdklafjdla;fd <-------- find this line of code
我尝试了以下代码但不起作用。
^!(?!:)*$
最佳答案
如果有多行输入,则需要逐行读取数据,并检查每行是否以!
开头且不包含:
,如下所示正则表达式:
/^![^:]*$/
或者如果您想拆分条件:
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
@matches
将包含通过测试的所有行。
关于regex - 如何使用 perl 正则表达式查找不包含冒号符号的文本行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32661517/