正则表达式如何找到那些不以给定字符串开头的行?

时间:2014-04-16 04:56:23

标签: regex perl

我可以使用perl风格使用什么正则表达式来查找所有那些不以标记开头的行。

我的文字或多或少是这样的:

<english> text text text text.
<english> text text text.
text text text

我需要验证,所有行都以此开头,我希望看到所有那些不以它开头的内容。

我试过的是:

^[^<english>].*$

(?!^<english>).*

(?<!<english>).*

.*(?!<english>).*

但没有那些工作。

有人可以帮助我,解释提供的正则表达式吗?感谢。

2 个答案:

答案 0 :(得分:3)

您不需要任何断言,只需进行测试:

use strict;
use warnings;

while (<DATA>) {
    if (/^<english>/) {
        print "matches:  $_";
    } else {
        print "no match: $_";
    }
}

__DATA__
<english> text text text text.
<english> text text text.
text text text

答案 1 :(得分:3)

你需要这样做:

^(?!<english>).*?$使用gm修饰符

这匹配<english>

开头的行

演示:http://regex101.com/r/xZ1xF4