2011-06-15 33 views
4

我有以下格式的文件開始:Syn的匹配正則表達式表達對所有線路用冒號結束,而不是用破折號

Abc Task Header: 

- task detail a 

- task detail b 


Def Task Header: 

- task detail c: 

    - task sub detail c1 

    - task sub detail c2 

- task detail d 

我想有我語法文件匹配(並高亮顯示)下面幾行:

美國廣播公司工作頁眉:
防守任務標題:

希望下面的行匹配,並強調:

任務詳細C:


注意事項:

  • 所有任務標題以字母開頭,用冒號結束。
  • 任務頭並不比上面列出的一個之外的任何一致的命名約定(所以沒有Task Header的名字......這只是一個例子名)
  • 任務詳細信息以冒號可能結束,如果他們有子任務詳細信息。
  • 任務細節始終以-(短劃線)字符開頭。
  • 任務細節沒有縮進。這是使用列表時,StackOverflow編輯器的一個副作用。
  • 顯示的所有項目符號在文件中實際上都是-(破折號)。這也是StackOverflow編輯器的一個副作用。

我已經嘗試了一些東西,但他們似乎並沒有正常工作。

例如

syn match myTask "[A-Z]*:$" 

這會導致僅突出顯示任務標題以及冒號的最後一個單詞。它還突出顯示任何具有冒號的任務細節。

syn match myTask "[^-].*[A-Z].*:$" 

這導致突出顯示整個任務頭和結腸(想要的行爲),但是突出了含有結腸任何任務的細節。它不突出短劃線,但突出顯示其餘部分。

任何想法?

感謝


UPDATE:

嗯,比利月球的例子是開門見山,並覆蓋一個場景,將永遠是正確的。然而,還有一些其他答案也可以運作(謝謝YGomez)。我會在這裏添加一些樣本,這些樣本或者是我在其他答案的啓發下得到了工作的情況下(以防其他人在未來尋找類似問題的解決方案);

syn match myTask "^[^-].*:$" 

syn match myTask "[A-Z]*:$" 
syn match myTask "^\s*[A-Z].*:$" 

// These two are equivalent. 
syn match myTask "^\s*[A-Za-Z].*:$" 
syn match myTask "^\s*\c\w.*:$" 
+0

你要忽略空格在線的開始?在開始時放上一個^(插入符號)。如果你想 – 2011-06-15 17:56:58

回答

3

試試這個:

syn match myTask "^[^-].*:$" 
1

你可以試試:

syn match myTask "^[A-Z].*:$" 

你說他們都以字母開頭,所以不用檢查它不與-啓動,檢查更強的條件,它以一個字母開頭(在上面的情況下,一個大寫字母)。

編輯:更可能的情況:

如果你能收到空白:

syn match myTask "^\s*[A-Z].*:$" 

如果能夠過小寫:

syn match myTask "^\s*[A-Za-z].*:$" 
+0

這些似乎沒有工作,但他們看起來是正確的。 – 2011-06-15 18:30:53

+0

@Jason Down:你得到的錯誤是什麼? – yarian 2011-06-15 18:32:37

+0

@YGomez:沒有錯誤,它只是沒有突出顯示任何任務標題。在你的第一個例子中,如果刪除括號,我可以使它工作。所以它適用於「^ [A-Z]。*:$」 – 2011-06-15 18:34:43

相關問題