2009-10-17 77 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

另外值得指出的是,裏面的字符類,-是特殊的,如果不是第一個或最後一個字符。即使在這些情況下,有些人更願意逃避它,例如[ \-],以防在後面偶爾添加後面的字符。