我有以下格式的文件開始: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.*:$"
你要忽略空格在線的開始?在開始時放上一個^(插入符號)。如果你想 – 2011-06-15 17:56:58