我有SynMultiSyn Highlighter(synHTMLcomplex),包括HTML(synHTML)和JavaScript(synJScript),如下所示:
synHTML : TSynHTMLSyn;
synJScript : TSynJScriptSyn;
synHTMLcomplex: TSynMultiSyn;
// HTML complex
with SynHTMLcomplex do begin
DefaultLanguageName:= 'HTML complex';
DefaultFilter := 'HTML complex (*.html; *.htm)|*.html; *.htm';
DefaultHighlighter := synHTML;
with Schemes do begin
Add.Index:= 0;
with Items[0] do begin
Highlighter:= synJScript;
SchemeName := 'JavaScript';
StartExpr := '<script';
EndExpr := '</script>';
with MarkerAttri do
Background:= clNone;
end;
end;
end;
Run Code Online (Sandbox Code Playgroud)
一旦进入SynEdit,是否有任何方法(属性或方法)知道光标(CaretY)是哪种Highlighter(synHTML或synJScript)?
有人可以帮忙吗?
我对RegEx有一点了解,但此刻,它远远超出了我的能力.
我需要帮助才能在最后一个没有匹配括号的开括号之后立即找到文本/表达式.
这是开发中的开源软件(Object Pascal)的CallTip.
下面是一些例子:
------------------------------------
Text I need
------------------------------------
aaa(xxx xxx
aaa(xxx, xxx
aaa(xxx, yyy xxx
aaa(y=bbb(xxx) y=bbb(xxx)
aaa(y <- bbb(xxx) y <- bbb(xxx)
aaa(bbb(ccc(xxx xxx
aaa(bbb(x), ccc(xxx xxx
aaa(bbb(x), ccc(x) bbb(x)
aaa(bbb(x), ccc(x), bbb(x)
aaa(?, bbb(?? ??
aaa(bbb(x), ccc(x)) ''
aaa(x) ''
aaa(bbb( ''
------------------------------------
For all text above the RegEx proposed by @Bohemian
(?<=\()(?=([^()]*\([^()]*\))*[^()]*$).*?(?=[ ,]|$)(?! <-)(?<! <-)
matches all cases.
For the below (I found these cases when implementing the RegEx in the software) not
------------------------------------
New …Run Code Online (Sandbox Code Playgroud)