我正在尝试编写一个正则表达式来匹配第一个属性:和!所以通行证或失败
PASS : test::subtest() message
SKIP : test::subtest2() message
FAIL! : test::subtest3() message
以下正则表达式
([^:]*)
但它也匹配!与失败!
所以我试过
([^:!]*)
但这不起作用它与FAIL不匹配!一点都不。
EDIT 抱歉调试错误的东西,我们需要看看完整的正则表达式
if($line =~ m/([^:!]+):\s?([^:]*)::([^(]*)(\([^\)]*\))(.*)/)
答案 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
我所做的基本上是在!?
([^:!]*)