2009-10-17 45 views
0

试图仅匹配以下示例中的第一个字符。简单正则表达式否定

样品字符串:C/C++/Objective C/Objective-C/ObjectiveC/objectiveC

我的错误的正则表达式:(?![O|o]bjective[ |-]?)C(?!\+\+)

卫生署。

+1

顺便说一句,你还没有提到你正在使用哪个正则表达式引擎。并非所有引擎都支持相同的功能,因此您应该始终指定您正在使用的内容。 – 2009-10-17 21:52:28

回答

0

试试这个:

(?<![Oo]bjective[ -]?)C(?!\+\+) 


更正为:

  • 使用负的,而不是消极前瞻(在(?<! ... )位)回顾后。
  • 从字符类中删除管道字符([ ... ]位)。

这也可能是值得加入了对\b小号无论是C的一面,因为你当前的正则表达式匹配CoconutBBCCFML

另外值得指出的是,里面的字符类,-是特殊的,如果不是第一个或最后一个字符。即使在这些情况下,有些人更愿意逃避它,例如[ \-],以防在后面偶尔添加后面的字符。