我有以下SyntaxDefinition.xml文件,用于为SilverStripe(.ss)文件创建语法高亮显示。然而,我得到了一个正则表达式错误,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE syntax SYSTEM "syntax.dtd">
<syntax>
<head>
<name>SilverStripe Syntax</name>
<charsintokens><![CDATA[_0987654321abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@]]></charsintokens>
</head>
<states>
<default id="Base" color="#000">
<state id="String" color="#760f15">
<begin><regex>"</regex></begin>
<end><regex>(((?<!\)(\\)*)|^)"</regex></end>
</state>
<state id="Variable" color="#ff0000">
<begin><regex>^$([a-z])(?:)</regex></begin>
<end><regex>[nr]</regex></end>
</state>
<import mode="PHP-HTML"/>
</default>
</states>
</syntax>
我希望此代码的"变量"部分为任何以美元符号开头的代码着色,例如$Content。
尝试:
<begin><regex>^$[^rn]+</regex></begin>
或
<begin><regex>^$</regex></begin>
取决于它的工作方式
我发现了一段似乎有效的代码:
<regex>($([wd])+)</regex>