3

我正在尝试解决以下问题,因为它在我的网站上非常烦人。 https://code.google.com/p/google-code-prettify/issues/detail?id=341&thanks=341&ts=1398085413

并参考以下美化代码文件: https ://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-sql.js?r=179

问题是

  1. 当在 SQL 中创建以“\”结尾的字符串时,荧光笔认为它已被转义,而这不是 T-SQL 语法。
  2. 要重现,请将此代码用作源代码:(安装了 Google Code Prettify)

    <pre class="prettyprint lang-sql">
     SELECT @BUPath = 'c:\backups\' + @DBName + '-B4 CHANGE.bak'
     SELECT @BUName = @DBName + '-B4 CHANGE'
    </pre>
    

我希望代码能够理解部分 'c:\backups\' 中引号前的斜杠不是转义字符......

我期望这条线需要更改,但我不确定如何:

[PR['PR_STRING'],      /^(?:"(?:[^\"\\]|\\.)*"|'(?:[^\'\\]|\\.)*')/, null,
      '"\'']

小提琴显示问题:http: //jsfiddle.net/JH5uj/5/

4

1 回答 1

3

我认为https://github.com/google/code-prettify/blob/master/src/lang-sql.js上的 PR_STRING 定义必须是从反斜杠是转义字符的其他语言复制而来的。

/^(?:"[^"]*"|'[^']*')/

据我所知,它做到了,但作为一个单纯的数据库人,我可能会遗漏一些东西。

(很抱歉迟到了,但我刚刚遇到了同样的问题并找到了这个线程。)

于 2015-08-26T18:43:40.773 回答