我正在尝试匹配一个字符串(使用Perl正则表达式),只要它不以“abc:”或“defg:”开头,但我似乎无法弄清楚如何。我尝试过像
这样的东西^(?:(?!abc:)|(?!defg:))
答案 0 :(得分:11)
Lookahead (?=foo)
,(?!foo)
和lookbehind (?<=foo)
,(?<!foo)
不会使用任何字符。
你可以:
^(?!abc:)(?!defg:)
或
^(?!defg:)(?!abc:)
订单没有任何区别。
答案 1 :(得分:5)
尝试这样做:
^(?!(?:abc|defg):)
答案 2 :(得分:1)
...或者可能已经删除了原始表达式的替换:
^(?:(?!abc:)(?!defg:))
答案 3 :(得分:1)
^(?!abc:|defg:)\s*\w+
使用此正则表达式。 这样可以避免使用“abc:”和“defg:”开始。
答案 4 :(得分:0)
答案 5 :(得分:0)
这将完成任务:
^(?!(defg|abc):).*
答案 6 :(得分:0)
请你试试这个:
use strict;
use warnings;
use Cwd;
while(<DATA>)
{
my $line=$_;
print $line unless($line=~m/^(abc|defg*)/m);
}
__DATA__
ebc this is testing ebc
dbc this is testing dbc
defg this is testing defg
abc this is testing abc
defg this is testing defg