gpt4 book ai didi

regex - 谷歌代码美化Delphi评论

转载 作者:行者123 更新时间:2023-12-03 15:57:45 25 4
gpt4 key购买 nike

我试图让 google 代码美化工作,显示类似于 Delphi IDE 的内容,但遇到了注释问题

这是一条评论:

{text in here}

这是编译器指令(不是注释):

{$text in here}

有谁知道如何更改下面的评论部分,以便如果 { 后面的字符是 $ 字符,那么它就不是评论

这是我一直在使用的 lang-Pascal.js

PR.registerLangHandler(
PR.createSimpleLexer(
[ // shortcutStylePatterns
// 'single-line-string'
[PR.PR_STRING, /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$))/, null, '\''],
// Whitespace
[PR.PR_PLAIN, /^\s+/, null, ' \r\n\t\xA0']
],
[ // fallthroughStylePatterns
// A cStyleComments comment (* *) or {}
[PR.PR_COMMENT, /^(?:\/\/[^\r\n]*)|\(\*[\s\S]*?(?:\*\)|$)|^\{[\s\S]*?(?:\}|$)/, null],
//[PR.PR_COMMENT, /^\(\*[\s\S]*?(?:\*\)|$)|^\{[\s\S]*?(?:\}|$)/, null],
[PR.PR_KEYWORD, /^(?:TRY|EXCEPT|PUBLIC|PRIVATE|CLASS|PROPERTY|ABSOLUTE|AND|ARRAY|ASM|ASSEMBLER|BEGIN|CASE|CONST|CONSTRUCTOR|DESTRUCTOR|DIV|DO|DOWNTO|ELSE|END|EXTERNAL|FOR|FORWARD|FUNCTION|GOTO|IF|IMPLEMENTATION|IN|INLINE|INTERFACE|INTERRUPT|LABEL|MOD|NOT|OBJECT|ON|OF|OR|PACKED|PROCEDURE|PROGRAM|RECORD|REPEAT|SET|SHL|SHR|STRICT|THEN|TO|TYPE|UNIT|UNTIL|USES|VAR|VIRTUAL|WHILE|WITH|XOR)\b/i, null],
[PR.PR_LITERAL, /^(?:true|false|self|nil)/i, null],
[PR.PR_PLAIN, /^[a-z][a-z0-9]*/i, null],
// Literals .0, 0, 0.0 0E13
[PR.PR_LITERAL, /^(?:\$[a-f0-9]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+\-]?\d+)?)/i, null, '0123456789'],
[PR.PR_PUNCTUATION, /^.[^\s\w\.$@\'\/]*/, null]
]),
['pascal']);

最佳答案

由于语法是 JS(并且文件是 lang-Pascal.js),我还假设正则表达式符合 ECMAScript 5 规范。

一个非常简单的修复方法是在 { 之后添加 (?!\$) 否定前瞻:

^(?:\/\/[^\r\n]*)|\(\*[\s\S]*?(?:\*\)|$)|^\{(?!\$)[\s\S]*?(?:\}|$) 
^^^^^

请参阅regex demo

如果字符串/行开头的文字 { 后有 $,则此先行操作将使匹配失败。

关于regex - 谷歌代码美化Delphi评论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37971671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com