我正在尝试创建一个与我的日志中的自定义标头匹配的语法高亮显示器。这是一个例子:
SYSTEM INFORMATION
Memory
----------------------------------------
Total 14841733120
Free 12260917248
Active 583532544
Swap Total 5009104896
Swap Free 5009104896
% Used 3
% Swap Used 0
Disk
----------------------------------------
Total 114272681984
Free 107483385856
% Used 5
我想要匹配的是标题行(例如,内存)和以下行的短划线。我已经开发了一个正则表达式模式来做到这一点:
^[\w|\ ]+(\ {0,})\n(\-{40})
不幸的是,当我尝试创建自定义语法高亮显示时,此正则表达式不再匹配。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>fileTypes</key>
<array>
<string></string>
</array>
<key>name</key>
<string>mylog</string>
<key>patterns</key>
<array>
<dict>
<key>comment</key>
<string>section header</string>
<key>match</key>
<string>^[\w|\ ]+(\ {0,})\n(\-{40})</string>
<key>name</key>
<string>constant.character.mylog</string>
</dict>
</array>
<key>scopeName</key>
<string>text.mylog</string>
<key>uuid</key>
<string>unique-uuid</string>
</dict>
</plist>
有关获取自定义语法高亮显示以匹配两行的任何建议吗?
答案 0 :(得分:2)
我担心这是不可能的。请参阅TextMate Manual。您不能使用单个正则表达式来匹配跨行。您可以做的最接近的事情可能是使用begin
和end
关键字。看看这是否符合你的喜好?
...
<array>
<dict>
<key>begin</key>
<string>^[A-Z][a-z ]*$</string>
<key>end</key>
<string>-{40}</string>
<key>name</key>
<string>variable.parameter</string>
</dict>
</array>
...