regex - 如何使用 perl 正则表达式查找不包含冒号符号的文本行

标签 regex perl

例如,我试图不查找具有以下内容的文本行

    !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

参见IDEONE demo

@matches 将包含通过测试的所有行。

关于regex - 如何使用 perl 正则表达式查找不包含冒号符号的文本行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32661517/

相关文章:

c - C语言中匹配IP地址的最佳正则表达式或技术是什么

python原始字符串转义字符

javascript - 正则表达式在javascript中使用特殊字符的名称

regex -\d+ 正则表达式忽略开头的减号

perl - Perl Moose 类中的私有(private)变量

Perl 取消引用特定值的数组

arrays - 检查二维数组是否完全为空 perl

Java:用于删除 XML 文件部分内容的正则表达式

c - 查找单词密度最高的文本

用于回归测试的 Perl 辅助工具