2016-10-31 3 views
2

스크립팅 언어에 대한 언어 강조 패키지를 작성하고 있습니다. 이 언어의 주석은 숫자 기호 #으로 시작하고 마지막 문자가 앰퍼샌드 & 인 경우를 제외하고는 같은 줄로 끝납니다. 이것이 내가 시도한 것이다.Atom 언어 문법에 대한 다중 표현

{ 
    'comment': 'Comments' 
    'begin': '#' 
    'end': '[^&]$' 
    'name': 'punctuation.definition.comment' 
    'patterns': [ 
     { 
      'include': 'text.todo' 
     } 
    ] 
} 

는하지만이 실패하고 간단한 달러 기호 $로 작동합니다. Atom은 Oniguruma 정규 표현식을 사용하는 TextMate을 기반으로합니다. 이것은 작동해야하지만 전혀 보이지 않습니다 ((?<!&)$). 흥미롭게도 '역 매칭'[&]$은 완벽하게 작동합니다.

이 버그입니까? 아니면 뭔가 누락 되었습니까?

아톰의 나의 버전은 다음과 같습니다 (?<!&)$이 작동하지 않는 이유

Atom : 1.10.2 
Electron: 0.37.8 
Chrome : 49.0.2623.75 
Node : 5.10.0 
+1

네거티브 lookbehind가 필요한 경우'(!

+0

@ wiktor-stribiżew 맞아, 오타를 만들었지. (내가 Atom을 시도했을 때가 아냐.) 수정 됨. – durum

답변

0

난 아직도 모르겠지만, 완벽하게 (?<!&)\n 수행합니다

{ 
    'comment': 'Comments' 
    'begin': '#' 
    'end': '(?<!&)\n' 
    'name': 'punctuation.definition.comment' 
    'patterns': [ 
     { 
      'include': 'text.todo' 
     } 
    ] 
} 

내가 왜 일반 찾으려고합니다 문자열의 끝이있는 식 (달러 기호 $)이 작동하지 않고이 대답이 업데이트됩니다.