匹配冒号前的单词,除非行以连字符开头

时间:2011-01-29 17:44:02

标签: regex

我正在使用此RegEx来匹配冒号之前的单词。

([^\s]+)\:

但是,如果 行以连字符/破折号开头,我将如何更改此设置以便仅匹配该字词?

修改

应匹配:

     [object doSomething:foo];

不应该匹配:

- (void)doSomething:(NSString *)string;

2 个答案:

答案 0 :(得分:1)

在多行模式下尝试此正则表达式:

^[^\r\n:-][^\r\n:]*:\s*

答案 1 :(得分:0)

^[^:-].*?:\s*

应该做的伎俩。 (假设未使用DOT_ALL修饰符。)

[^:-] // One char, not a hyphen or colon
.*? // Perhaps more, non-greedy
:\s* // Colon and optionally spaces

Ergo:第一个冒号前至少有一个字符。第一个字符不能是连字符或冒号。

如果您觉得更容易阅读,请另外^[^:-][^:]*:\s*


修改
根据评论,这是解决OP问题的原因:

^([^:-][^:]*):