正则表达式匹配除两个字符外的所有字符

时间:2011-06-09 19:47:17

标签: regex

我正在尝试编写一个正则表达式来匹配第一个属性:和!所以通行证或失败

PASS   : test::subtest()  message
SKIP :    test::subtest2()  message
FAIL! : test::subtest3()  message

以下正则表达式

([^:]*)

但它也匹配!与失败!

所以我试过

([^:!]*) 

但这不起作用它与FAIL不匹配!一点都不。

EDIT 抱歉调试错误的东西,我们需要看看完整的正则表达式

if($line =~ m/([^:!]+):\s?([^:]*)::([^(]*)(\([^\)]*\))(.*)/)

4 个答案:

答案 0 :(得分:5)

您能提供更多代码吗?它对我有用:

ckruse@achilles ~ $ perl -e 'print "FAIL! : blabla" =~ /^([^:!]+)/ ? "yes: $1" : "no","\n"'

yes: FAIL

答案 1 :(得分:1)

如果你知道你正在寻找的是在行的开头,那么这应该有效:

^([^:!]+)[:!]

答案 2 :(得分:0)

看看这是否有助于你

([^:!]\w+)

答案 3 :(得分:0)

我想你想要这样的东西:

/([^:!\s]+)!? \s* : \s* ([^:\s]*) :: ([^(]*)(\([^\)]*\))(.*)/x

我所做的基本上是在!?

之后添加([^:!]*)